29.4.4 CBLARGV
CBLARGVサービスルーチンは,コマンド行に指定した引数の内容を,引数2の領域に転送するものです。コマンド引数の内容は,C言語のmain関数で受け取るargvに該当します。
- 形式
CALL 'CBLARGV' USING 引数1 引数2
- 引数
-
-
引数1には,CBLARGVサービスルーチンによって受け取るコマンド引数の順序を4バイトの2進項目で指定します。
-
引数2には,コマンド引数の情報を受け取る領域を指定します。この項目は次の形式で定義します。
DATA DIVISION. WORKING-STORAGE SECTION. 01 PARM. 02 PARM-LENGTH PIC 9(4) USAGE COMP. …1. 02 PARM-AREA. 03 PARM-AREA-DETAIL PIC X(1) OCCURS 1 TO 100 TIMES …2. DEPENDING ON PARM-LENGTH.
-
コマンド引数の長さを格納する領域で,2バイトの2進項目で指定します。コマンド引数が100バイトを超えたときは常に100が設定されます。
-
コマンド引数の値を格納する領域で,最大長100バイトの可変長項目で定義します。コマンド引数が100バイトを超えたときは先頭から100バイトが格納されます。
-
- 戻り値
-
0:正常終了した場合
1:コマンド引数の長さが100バイトを超えた場合
2:CBLARGCで戻された引数の個数を超えた値で引数1を指定した場合,またはこのサービスルーチンに引き渡された引数1(引数の順序)に示される引数を,実行する実行可能ファイルの引数に指定していない場合
-1:エラーが発生した場合(-Main,Systemオプションを指定した最外側のCOBOLプログラム以外から呼び出した場合)
- 規則
-
-
このサービスルーチンは,-Main,Systemオプションを指定した最外側のCOBOLプログラムだけから呼び出せます。これ以外のプログラムから呼び出した場合は,戻り値-1が返されます。
-
このサービスルーチンの戻り値が0または1以外の場合,CBLARGVに渡された引数2の内容は保証しません。
-
引数2の領域は,コマンド引数として受け取れる最大長分の100バイトを準備する必要があります。引数2に100バイト未満の領域を指定した場合,領域を破壊することがあります。
-
コマンド引数の長さが100バイト未満の場合,引数2の引数格納領域の余った領域には空白が設定されます。
-
- 使用例
IDENTIFICATION DIVISION. : DATA DIVISION. WORKING-STORAGE SECTION. 77 ARGC PIC 9(9) USAGE COMP. 77 COUNTER PIC 9(9) USAGE COMP. : 01 PARM. …1. 02 PARM-LENGTH PIC 9(4) USAGE COMP. …2. 02 PARM-AREA. …3. 03 PARM-AREA-C PIC X(1) OCCURS 1 TO 100 DEPENDING ON PARM-LENGTH. : PROCEDURE DIVISION. : CALL 'CBLARGC' USING ARGC. IF RETURN-CODE NOT = 0 THEN CBLARGC異常時の処理 END-IF. : MOVE 1 TO COUNTER. PERFORM UNTIL ARGC = 0 MOVE SPACES TO PARM-AREA CALL 'CBLARGV' USING COUNTER PARM IF RETURN-CODE NOT = 0 THEN CBLARGV異常時の処理 END-IF CBLARGVで受け取ったパラメタに対応する処理 ADD 1 TO COUNTER SUBTRACT 1 FROM ARGC END-PERFORM. :
-
CBLARGVに引き渡す実引数領域です。
-
CBLARGVによって3.に示す引数格納領域に設定された文字列の長さを示します。最大長を超えて引数を設定したときは100が設定されます。
-
CBLARGVで設定する引数領域で,最大長100バイトの領域として可変長で定義します。100バイト以上の引数を指定した場合,実際のコマンドに指定した引数情報の先頭から100バイトまでが設定されます。
-