COBOL2002 ユーザーズガイド
COBOL入出力サービスルーチンで使用するインタフェース領域を,次に示します。
表13-2 COBOL入出力サービスルーチンで使用するインタフェース領域
インタフェース領域の名称 (構造体のtypedef名称) |
サイズ(バイト) | 用途 | |
---|---|---|---|
32bit版PC(x86) COBOL2002の場合 | 64bit版PC(x64) COBOL2002の場合 | ||
管理情報インタフェース領域 (CBLCOMFL) |
256 | 312 |
|
パラメタインタフェース領域 (CBLPARMFL) |
32 | 48 |
|
管理情報インタフェース領域の形式を,「表13-3 管理情報インタフェース領域の形式(1)」,および「表13-4 管理情報インタフェース領域の形式(2)」に示します。
表13-3 管理情報インタフェース領域の形式(1)
データ項目名 | 32bit版PC(x86) COBOL2002の場合 | 64bit版PC(x64) COBOL2002の場合 | 設定/参照する値 | CBLOPENサービスルーチンでの指定 | |||||||
---|---|---|---|---|---|---|---|---|---|---|---|
区分 | 名称 | 位置 | 長さ | データ形式 | 位置 | 長さ | データ形式 | OUTPUT指定 | OUTPUT以外 | ||
属性チェック無 | 属性チェック有 | ||||||||||
ファイル情報 | ファイル編成とレコード形式 | 0 | 4 | char[4] | 0 | 4 | char[4] |
|
○ | △※1 | ○ |
最大レコード長 | 4 | 4 | int | 4 | 4 | int | レコード長 (固定長形式の場合レコード長) |
○ | △※1 | ○ | |
最小レコード長 | 8 | 4 | int | 8 | 4 | int | レコード長 (固定長形式の場合は無視される) |
○ | △ | ○ | |
未使用 | − | − | − | 12 | 4 | char[4] | サービスルーチン予備領域 | NULL(X'00')を指定してクリアしておくこと | NULL(X'00')を指定してクリアしておくこと | NULL(X'00')を指定してクリアしておくこと | |
ファイル名称アドレス | 12 | 4 | char* | 16 | 8 | char* | オープンするファイル名称のアドレスファイル名称はNULLで終わる文字列とする。 CBLOPENサービスルーチンを呼び出す時だけ指定が必要。 CBLOPENサービスルーチンの呼び出しが成功したあと,CBLCLOSEサービスルーチン実行までの入出力文で,COBOL2002は,このアドレス,およびアドレスが指す領域を参照しない。 |
○ | ○ | ○ | |
属性チェックオプション※2 | 16 | 1 | char | 24 | 1 | char |
|
− | ○ CBLCOM_NOCHK |
○ CBLCOM_CHK |
|
ファイルOPEN文のモード | 17 | 1 | char | 25 | 1 | char |
|
○ CBLCOM_OPEN_OUTPUT |
○ | ○ | |
ファイル施錠モード | 18 | 1 | char | 26 | 1 | char |
|
○ | ○ | ○ | |
ディスク書き込みオプション | 19 | 1 | char | 27 | 1 | char |
|
○ | ○ (読み取り専用では無視) |
○ (読み取り専用では無視) |
|
ファイルアクセスモード | 20 | 1 | char | 28 | 1 | char |
|
○ | ○ | ○ | |
未使用 | 21 | 7 | char[7] | 29 | 11 | char[11] | サービスルーチン予備領域 | ○ NULL(X'00')を指定してクリアしておくこと |
○ NULL(X'00')を指定してクリアしておくこと |
○ NULL(X'00')を指定してクリアしておくこと |
COBOL2002インストールフォルダ\include
表13-4 管理情報インタフェース領域の形式(2)
データ項目名 | 32bit版PC(x86) COBOL2002の場合 | 64bit版PC(x64) COBOL2002の場合 | 設定/参照する値 | 備考 | |||||
---|---|---|---|---|---|---|---|---|---|
区分 | 名称 | 位置 | 長さ | データ形式 | 位置 | 長さ | データ形式 | ||
エラー情報 | 入出力状態 (FILE STATUS) |
28 | 2 | short | 40 | 2 | short | 0〜99 | 正常/エラーに関係なく,必ず値が返される。 返される値の詳細は「付録G 入出力状態の値」を参照 |
システムエラー情報有無 | 30 | 1 | char | 42 | 1 | char |
|
||
未使用 | 31 | 1 | char | 43 | 1 | char | サービスルーチン予備領域 | ||
COBOLメッセージ番号 | 32 | 2 | short | 44 | 2 | short | 3001〜4099 COBOLエラーメッセージ番号 |
「13.5.1 COBOL入出力サービスルーチンで出力されるエラーメッセージ番号」を参照 | |
システムコール番号 | 34 | 2 | short | 46 | 2 | short | 1〜999 エラーとなったシステムコールを表すCOBOL2002が定める関数番号 |
システムエラー情報有りの場合に有効。 番号と内容については,マニュアル「COBOL2002 メッセージ」を参照 |
|
システムエラーコード | 36 | 4 | int | 48 | 4 | int | システムが返すエラーコード | システムエラー情報有りの場合に有効。 システムのマニュアルを参照 |
|
COBOLエラー詳細情報 | 40 | 1 | char | 52 | 1 | char | インタフェース領域指定誤り,およびファイル属性エラー発生時の詳細情報 | COBOLメッセージ番号が3701〜3703,および3801〜3803の場合に有効。 設定される値は,「表13-5 COBOLエラー詳細情報の一覧」を参照 |
|
未使用 | 41 | 15 | char[15] | 53 | 15 | char[15] | サービスルーチン予備領域 | ||
デバッグ情報 | デバッグ情報出力指示 | 56 | 1 | char | 68 | 1 | char |
|
「13.5.2 インタフェース領域のダンプ出力」を参照 |
未使用 | 57 | 11 | char[11] | 69 | 11 | char[11] | サービスルーチン予備領域 | ||
ユーザ領域 | 68 | 16 | char[16] | 80 | 16 | char[16] | プログラムで使用可能な領域。 COBOL2002では管理しない |
||
システムで使用する領域 | 84 | 172 | char[132] char *[10] |
96 | 216 | char[136] char *[10] |
システムで使用する領域。 最初のオープンを実行する前にNULL(X'00')を指定してクリアしておく |
NULL(X'00')クリア以降,この領域を更新してはならない |
COBOL2002インストールフォルダ\include
サービスルーチンの終了状態 | 入出力状態 | COBOLメッセージ番号 | システムエラー情報有無 | システムコール番号/システムエラーコード |
---|---|---|---|---|
正常終了 | 00 | 0 | なし (CBLCOM_ERR_NOSYSTEM) |
0 |
エラー発生 | 入出力状態を表す値 | メッセージ番号 (0以外) |
なし (CBLCOM_ERR_NOSYSTEM) |
0 |
あり (CBLCOM_ERR_SYSTEM) |
該当するコードが設定される |
表13-5 COBOLエラー詳細情報の一覧
COBOLメッセージ番号 | エラー種別 | マクロ名称 | 値 | エラー項目/エラーの意味 |
---|---|---|---|---|
3701 3801 |
管理情報インタフェース領域指定誤り | CBLCOM_ERRC_FORM | 1 | ファイル編成とレコード形式 |
CBLCOM_ERRC_MAX | 2 | 最大レコード長 (最大レコード長の値が1〜1,073,741,799以外,または最小レコード長より小さい) |
||
CBLCOM_ERRC_MIN | 3 | 最小レコード長 (最小レコード長の値が1〜1,073,741,799以外) |
||
CBLCOM_ERRC_PATH | 4 | ファイル名称アドレス | ||
CBLCOM_ERRC_FLOPT | 5 | 属性チェックオプション | ||
CBLCOM_ERRC_OPEN | 6 | ファイルオープンモード | ||
CBLCOM_ERRC_LOCK | 7 | ファイル施錠モード | ||
CBLCOM_ERRC_FSYNC | 8 | ディスク書き込みオプション | ||
CBLCOM_ERRC_DBGINF | 9 | デバッグ情報出力指示 | ||
CBLCOM_ERRC_ACCESS | 10 | ファイルアクセスモード | ||
CBLCOM_ERRC_MSGBUFSIZ | 11 | メッセージ出力用バッファ長 | ||
3702 3802 |
パラメタインタフェース領域指定誤り | CBLCOM_ERRP_RDBUF | 21 | 読み込みバッファアドレス |
CBLCOM_ERRP_WRBUF | 22 | 書き出しバッファアドレス | ||
CBLCOM_ERRP_LOCK | 23 | WITH LOCK指定 | ||
CBLCOM_ERRP_KEY | 24 | レコード番号キー | ||
CBLCOM_ERRP_ACCESS | 25 | レコード単位アクセスモード | ||
CBLCOM_ERRP_KEYMODE | 26 | キー比較条件 | ||
3703 3803 |
ファイル属性エラー | CBLCOM_ERRF_CBL | 41 | ファイルフォーマット (COBOL以外で作成したファイル,またはファイル破壊) |
CBLCOM_ERRF_FORM | 42 | ファイル形式(ファイル編成,またはレコード形式) | ||
CBLCOM_ERRF_MAX | 43 | 最大レコード長 | ||
CBLCOM_ERRF_MIN | 44 | 最小レコード長 |
パラメタインタフェース領域の形式を,次に示します。
表13-6 パラメタインタフェース領域の形式
データ項目名 | 32bit版PC(x86) COBOL2002の場合 | 64bit版PC(x64) COBOL2002の場合 | 設定/参照する値 | 各サービスルーチンでの指定 | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
区分 | 名称および意味 | 位置 | 長さ | データ形式 | 位置 | 長さ | データ形式 | OP | CL | RE | WR | RW | DE | ST | UN | WD | ||
入出力パラメタ | 読み込みバッファ アドレス |
0 | 4 | char * | 0 | 8 | char * | 読み込んだレコードを格納する領域のアドレス | − | − | ○ | − | − | − | − | − | − | |
読み込み サイズ |
4 | 4 | int | 8 | 4 | int | 読み込んだレコードの長さを返す | − | − | △ | − | − | − | − | − | − | ||
未使用 | − | − | − | 12 | 4 | char[4] | サービスルーチン予備領域 | − | − | − | − | − | − | − | − | − | ||
書き出しバッファアドレス | 8 | 4 | char * | 16 | char * | 書き出すレコードのバッファアドレス | − | − | − | ○ | ○ | − | − | − | − | |||
書き出しサイズ | 12 | 4 | int | 24 | 4 | int | 書き出すレコードの長さ | − | − | − | ○※1 | ○※1 | − | − | − | − | ||
相対レコード番号キー (RELATIVE KEY |
16 | 4 | int | 28 | 4 | int | 入出力対象レコードキー番号※2 | ファイルアクセスモード:順アクセス | − | − | △ | △ | N | N | ○ | − | − | |
ファイルアクセスモード:乱アクセス | − | − | ○ | ○ | ○ | ○ | E | − | − | |||||||||
ファイルアクセスモード:動的アクセス | − | − | ※3 | ○ | ○ | ○ | ○ | − | − | |||||||||
WITH LOCK指定 | 20 | 1 | char | 32 | 1 | char | CBLPARM_NOLOCK:レコード施錠要求なし(WITH NO LOCK) CBLPARM_LOCK:レコード施錠要求あり(WITH LOCK) レコード施錠の詳細は,マニュアル「COBOL2002 言語 標準仕様編」を参照 |
○ | − | ○ | − | − | − | − | − | − | ||
レコード単位アクセスモード | 21 | 1 | char | 33 | 1 | char | CBLPARM_ACCESS_NEXT:順アクセス(READ NEXT) CBLPARM_ACCESS_KEY:乱アクセス(READ KEY) |
− | − | ○※4 | − | − | − | − | − | − | ||
キー比較条件 | 22 | 1 | char | 34 | 1 | char | 位置づける相対レコード番号とキー(key)の比較条件 CBLPARM_KEY_EQUAL:キーの値と等しい(EQUAL) CBLPARM_KEY_GREAT:キーの値より大きい(GREATER THAN) CBLPARM_KEY_NOTLESS:キーの値より小さくない(NOT LESS THAN) CBLPARM_KEY_GREATEQ:キーの値より大きいか,または等しい(GREATER THAN OR EQUAL) |
− | − | − | − | − | − | ○ | − | − | ||
未使用 | 23 | 9 | char[9] | 35 | 13 | char[13] | サービスルーチン予備領域 | ※5 | ※5 | ※5 | ※5 | ※5 | ※5 | ※5 | ※5 | ※5 |
指定する値 | レコード単位 アクセスモード |
指定可能な ファイルアクセスモード (CBLOPENサービスルーチン実行時の指定) |
動作 |
---|---|---|---|
CBLPARM_ACCESS_NEXT | 順アクセス |
|
次のどちらかのレコードを読み込む。
|
CBLPARM_ACCESS_KEY | 乱アクセス |
|
相対レコード番号キーに指定した番号のレコードを読み込む。 |
指定する値 | 比較条件 | 対応するCOBOL START文のKEY指定 | 位置づけるレコード(以下の条件を満たさない時はエラー) |
---|---|---|---|
CBLPARM_KEY_EQUAL | キーの値と等しい | KEY IS EQUAL TO (KEY IS = TO) |
相対レコード番号がキーと等しいレコード |
CBLPARM_KEY_GREAT | キーの値より大きい | KEY IS GREATER THAN (KEY IS > ) |
相対レコード番号がキーの値より大きい最初のレコード |
CBLPARM_KEY_NOTLESS | キーの値より小さくない | KEY IS NOT LESS THAN (KEY IS NOT < ) |
相対レコード番号がキーの値より小さくない最初のレコード |
CBLPARM_KEY_GREATEQ | キーの値より大きいか,または等しい | KEY IS GREATER THAN OR EQUAL TO (KEY IS >= ) |
相対レコード番号がキーの値より大きいか,または等しい最初のレコード |
All Rights Reserved. Copyright (C) 2013, 2016, Hitachi, Ltd.
All Rights Reserved. Copyright (C) 2002, 2011, Microsoft Corporation.