progress-4gl
OSユーティリティ
サーチ…
前書き
オペレーティングシステムにアクセスするための組み込みの関数とステートメントがいくつかあります。
OSコマンド
OSコマンドを実行します。
OS-COMMANDをオプションなしで実行すると、新しいシェルが起動し、終了しないので、グラフィカルOSで表示されます。
DEFINE VARIABLE cmd AS CHARACTER NO-UNDO.
cmd = "dir".
OS-COMMAND VALUE(cmd).
SILENT 、 NO-WAIT 、 NO-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.txtをc:\temp\target-file.txtコピーしc:\temp\source-file.txt 。 OS-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.txtをc:\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 )


