サーチ…


前書き

オペレーティングシステムにアクセスするための組み込みの関数とステートメントがいくつかあります。

OSコマンド

OSコマンドを実行します。

OS-COMMANDをオプションなしで実行すると、新しいシェルが起動し、終了しないので、グラフィカルOSで表示されます。

DEFINE VARIABLE cmd AS CHARACTER   NO-UNDO.

cmd = "dir".

OS-COMMAND VALUE(cmd).

SILENTNO-WAITNO-CONSOLE 3つのオプションがあります。

サイレント

オペレーティングシステムコマンドを処理した後、AVMシェルは一時停止します。 Windows GUIプラットフォームでウィンドウを終了するには、exitと入力する必要があります。 Windowsの文字プラットフォームでウィンドウを終了するには、exitを入力してRETURNまたはSPACEBARを押す必要があります。 SILENTオプションを使用すると、この一時停止をなくすことができます。このオプションは、プログラム、コマンド、またはバッチファイルが画面に出力を生成しないことが確かな場合にのみ使用してください。 NO-WAITでは使用できません。

OS-COMMAND SILENT VALUE("runprogram.exe").

NO-WAIT

マルチタスク環境では、オペレーティングシステムのコマンドが終了するのを待たずに、AVMがOS-COMMANDの後にすぐに制御を次のステートメントに戻します。 SILENTでは使用できません。このオプションはWindowsでのみサポートされています。

OS-COMMAND NO-WAIT VALUE("DIR > dirfile.txt").

Linux / Unixでは、コマンドの前に& -signを付けて、これを達成する必要があります:

OS-COMMAND VALUE("ls >> file.txt &").

NO-CONSOLE

オペレーティングシステムのコマンドを処理している間、AVMはコンソールウィンドウを作成します。コンソールウィンドウは、コマンドの実行後にクリーンアップされないことがあります。 NO-CONSOLEオプションを使用すると、このウィンドウが最初に作成されないようにすることができます。

OS-COMMAND NO-CONSOLE VALUE("startbach.bat").

OS-COMMANDからProgress ABLにエラーが返されることはありません。エラーを別の方法でチェックして、シェルスクリプトなどのファイルに書き込む可能性があります。

OPSYS

OPSYS -functionは、プログラムが実行されているOSを返します。

MESSAGE OPSYS VIEW-AS ALERT-BOX.

結果:

ここに画像の説明を入力

これを使用して、呼び出すOSユーティリティを選択することができます。

IF OPSYS = "LINUX" THEN 
    OS-COMMAND VALUE("ls -l").
ELSE 
    OS-COMMAND VALUE("dir").

OS-ERROR

整数で表される以前のOS-*呼び出しからのエラーを返します。 OS-ERRORを返すコールは次のとおりです。

  • OS-APPEND
  • OS-COPY
  • OS-CREATE-DIR
  • OS-DELETE
  • OS-RENAME
  • キャッシュを保存する

OS-COMMANDがないことに注意してください。 OS-COMMANDのエラーを処理する必要があります。

エラー番号説明
0 エラーなし
1 所有者ではない
2 そのようなファイル、又はディレクトリはありません
3 中断されたシステムコール
4 I / Oエラー
5 ファイル番号が正しくありません
6 これ以上のプロセスはありません
7 コアメモリが不足しています
8 アクセス拒否
9 アドレスが正しくありません
10 ファイルが存在しています
11 そのようなデバイスはありません
12 ディレクトリではない
13 ディレクトリです
14 ファイルテーブルのオーバーフロー
15 開いているファイルが多すぎます
16 あまりにも大きなファイル
17 デバイスにスペースが残っていない
18 ディレクトリが空ではない
999 マップされていないエラー(ABLデフォルト)

OS-GETENV関数

任意のOS環境変数の値を返します。

MESSAGE OS-GETENV ("OS") VIEW-AS ALERT-BOX.

Windowsマシンの場合:

ここに画像の説明を入力

MESSAGE OS-GETENV ("SHELL") VIEW-AS ALERT-BOX.

現在のシェルとしてのBashを持つLinuxマシンでの結果:

                        ┌────── Message ───────┐
                        │      /bin/bash       │
                        │ ──────────────────── │
                        │         <OK>         │
                        └──────────────────────┘

OS-COPY

ファイルをコピーする

COPYソースファイルtarget-file

c:\temp\source-file.txtc:\temp\target-file.txtコピーしc:\temp\source-file.txtOS-ERRORの成功または欠如をチェックする必要があります。

OS-COPY VALUE("c:\temp\source-file.txt")  VALUE("c:\temp\target-file.txt").
IF OS-ERROR <> 0 THEN DO:
    MESSAGE "An error occured" VIEW-AS ALERT-BOX ERROR.
END.

OS-DELETE

ファイルまたはファイルツリーを削除します。

他の多くのOS- *ユーティリティと同様に、 OS-ERRORステータスをチェックする必要があります。

OS-DELETEファイルまたはディレクトリを削除する[RECURSIVE]

/tmp/dirツリー全体を削除します。

OS-DELETE VALUE("/tmp/dir") RECURSIVE.

c:\dir\file.txtというファイルを削除します。

OS-DELETE VALUE("c:\dir\file.txt").

OS-CREATE-DIR

ディレクトリを作成します。ステータスはOS-ERROR

OS-CREATE-DIRディレクトリ

/usr/local/appDataというディレクトリを作成します。

OS-CREATE-DIR VALUE("/usr/local/appData").

OS-APPEND

あるファイルを別のファイルに追加します。ステータスはOS-ERRORチェックされます

OS-APPENDソース・ターゲット

sourcefile.txt targetfile.txtを追加しsourcefile.txt

OS-APPEND VALUE("sourcefile.txt") VALUE("targetfile.txt").

OS-RENAME

ファイルまたはディレクトリの名前を変更します。ステータスはOS-ERRORです。ファイルの移動(移動、名前の変更)にも使用できます。

OS-RENAME oldname newname

/tmp/old-name/tmp/new-nameます。

OS-RENAME VALUE("/tmp/old-name") VALUE("/tmp/new-name").

ファイルc:\temp\old.txtc:\new-dir\old.txt移動します。

OS-RENAME VALUE("c:\temp\old.txt") VALUE("c:\new-dir\old.txt").

OS-DRIVES(Windowsのみ)

システム上のすべてのドライブのリストを返します。

MESSAGE OS-DRIVES VIEW-AS ALERT-BOX.

4つのドライブ、CからFまでの結果:

ここに画像の説明を入力

Linuxでは、定義には「ドライブ」が接続されていないので、リストは単に空白になります。ディレクトリのリスト表示は別の方法で行われます( INPUT FROM OS-DIR



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow