SIT
COBOLは、Windowsのファイルやディレクトリについての操作機能を、組み込みサブルーチンとして提供している。
提供しているサブルーチンは下記のとおりである。
上記のうち、プロセスID関連以外の組み込みサブルーチンの名前および機能については、opensource
COBOLに準拠している。
(サンプルプログラム名:組み込みサブルーチン.cob)
カレントディレクトリの取得を行うには、CBL_GET_CURRENT_DIRを使用する。
CALL "CBL_GET_CURRENT_DIR" USING
BY VALUE 0
BY VALUE { 定数-1 | データ名-1 }
BY REFERENCE データ名-2
(*1) この組み込みサブルーチンに限り、BY REFERENCEが指定されていなくとも、BY REFERENCEが指定されているとみなす。
SIT
COBOLは、実行するプログラムの存在するディレクトリが、初期のカレントディレクトリとなる。
SIT
COBOLエディタによって、まだどこにも書き出されていないプログラムが実行された場合は、sitcobol.exe
が存在するディレクトリが、カレントディレクトリとなる。
000000 01 CURR-DIR PIC X(100).
000000 :
000000 MOVE ALL "*" TO CURR-DIR.
000000 CALL "CBL_GET_CURRENT_DIR" USING VALUE 0 VALUE 50 CURR-DIR.
000000 DISPLAY "カレント: " CURR-DIR *> カレントディレクトリが表示される。
上記は、カレントディレクトリを、50バイトのみ取得しようとしている。したがって、CURR-DIRの51バイト以降は”*“のままである。
カレントディレクトリを変更するには、CBL_CHANGE_DIRを使用する。
CALL "CBL_CHANGE_DIR" USING { 定数-1 | データ名-1}
(*) この組み込みサブルーチンに限り、定数-1、データ名-1は、暗にBY CONTENT句が指定されているものとみなす。
SIT
COBOLは、実行するプログラムの存在するディレクトリが、初期のカレントディレクトリとなる。
SIT
COBOLエディタによって、まだどこにも書き出されていないプログラムが実行された場合は、
sitcobol.exe が存在するディレクトリが、カレントディレクトリとなる。
00000 CALL "CBL_CHANGE_DIR" USING "./tmp".
上記は、カレントディレクトリを、相対パス指定で”./tmp”を指定した例である。 ディレクトリとして、‘/’を使用しているが、もちろん、“.\tmp” と指定してもよいが、’\‘記号が特殊文字と 認識されるケースがあるので、’/’を推奨する。
ファイルをコピーするには、CBL_COPY_FILEを使用する。
CALL "CBL_COPY_FILE" USING { 定数-1 | データ名-1 } {定数-2 | データ名-2 }
(*) この組み込みサブルーチンに限り、それぞれのパラメタは、暗にBY CONTENT句が指定されているものとみなす。
000000 CALL "CBL_COPY_FILE" USING "./PROGRAM.cob" "D:/save".
上記では、カレントディレクトリにある’PROGRAM.cob’を、Dドライブの/saveというディレクトリ配下にコピーしている。
ファイル名を変更するには、CBL_RENAME_FILEを指定する。
CALL "CBL_RENAME_FILE" USING { 定数-1 | データ名-1 } {定数-2 | データ名-2 }
(*) この組み込みサブルーチンに限り、それぞれのパラメタは、暗にBY CONTENT句が指定されているものとみなす。
000000 CALL "CBL_RENAME_FILE" USING "./PROGRAM.cob" "./PROGRAM_SAVE.cob".
上記では、カレントディレクトリにある’PROGRAM.cob’を、’PROGRAM_SAVE.cob’と名前を変えている。
000000 CALL "CBL_RENAME_FILE" USING "./PROGRAM.cob" "D:/save/PROGRAM_SAVE.cob".
上記では、カレントディレクトリにある’PROGRAM.cob’を、Dドライブの/saveというディレクトリ配下に名前を変えて 移動している。
ファイルを削除するには、CBL_DELETE_FILEを使う。
CALL "CBL_DELETE_FILE" USING { 定数-1 | データ名-1 }
(*) この組み込みサブルーチンに限り、それぞれのパラメタは、暗にBY CONTENT句が指定されているものとみなす。
000000 CALL "CBL_DELETE_FILE" USING "./TMP-DATA.dat".
上記では、カレントディレクトリにある’TMP-DATA.dat’を削除する。
ディレクトリを作成するには、CBL_CREATE_DIRを使う。
CALL "CBL_CREATE_DIR" USING { 定数-1 | データ名-1 }
(*) この組み込みサブルーチンに限り、それぞれのパラメタは、暗にBY CONTENT句が指定されているものとみなす。
000000 CALL "CBL_CREATE_DIR" USING "./tmp/first".
上記では、カレントディレクトリ配下の’tmp’というディレクトリ配下に新たなディレクトリ’first’を作成している。 もし、カレントディレクトリ配下に’tmp’ディレクトリが存在しない場合には、ディレクトリの作成は失敗する。
ディレクトリを削除するには、CBL_DELETE_DIRを使う。
CALL "CBL_DELETE_DIR" USING { 定数-1 | データ名-1 }
(*) この組み込みサブルーチンに限り、それぞれのパラメタは、暗にBY CONTENT句が指定されているものとみなす。
000000 CALL "CBL_DELETE_DIR" USING "./tmp/first".
上記では、カレントディレクトリ配下の’tmp’というディレクトリ配下のディレクトリ’first’を削除している。 もし、カレントディレクトリ配下に’tmp’ディレクトリが存在しない場合、あるいは、’./tmp/first’配下にファイル等が 存在していた場合には、ディレクトリの削除は失敗する。
自分自身のプロセスIDを取得するには、CBL_GET_PIDを使う。
CALL "CBL_GET_PID" USING データ名-1
000000 01 PID PIC 9(5).
:
000000 CALL "CBL_GET_PID" USING PID.
上記では、PIDに自分自身のプロセスIDが設定される。
自分自身の親のプロセスIDを取得するには、CBL_GET_PPIDを使う。
CALL "CBL_GET_PPID" USING データ名-1
000000 01 PPID PIC 9(5).
:
000000 CALL "CBL_GET_PPID" USING PPID.
上記では、PIDに自分自身の親のプロセスIDが設定される。