ファイル制御記述 (FCD)

ファイル制御記述 (FCD) は、使用中のファイルに関する情報を記述するデータ領域です。Visual COBOL 2.0 以降では、FCD の形式が FCD2 から FCD3 に変更されました。64 ビットのコンパイルでは、FCD3 形式のみを使用できます。32 ビットのコンパイルでは、FCD2 および FCD3 の両方の形式を使用できます。

コピー ファイル、 XFHFCD.CPY は、プログラムが P64 指令でコンパイルされている場合に FCD3 レコードを定義します。プログラムが P64 指令でコンパイルされていない場合は、XFHFCD.CPY は FCD2 レコードを定義します。FCD3 レコードは、ファイル、 xfhfcd3.cpy で直接、無条件に定義されます。また、 FCD2 レコードは、ファイル、 xfhfcd2.cpy で直接、無条件に定義されます。

ファイルハンドラを使用するには、プログラムで FCD をセットアップし、該当するフィールド (オペレーションコードによってフィールドが異なります) への入力とファイルハンドラの呼び出しを行います。FCD の該当フィールドに入力を行うと、ファイルハンドラがプログラムに情報を返します。

FCD で未使用の領域や予約済みの領域は、バイナリのゼロに設定する必要があります。

ファイルオープン呼び出しに使用した FCD はその後、このファイルに対してアクセスするときに必ず使用する必要があります。1 つのファイルに対して複数のオープン操作を実行できますが、各オープン操作ごとに別の FCD を使用する必要があります。

FCD には、レコード領域、ファイル名領域、キー定義ブロックへのポインタ (USAGE POINTER データ項目) を記述します。

FCD に含まれているフィールドを次の表に示します。フラグについては、該当のビットが有効な場合について説明しています。ビット 7 が MSB (左端) です。未使用のビットは将来使用するために予約されています。

フィールド名 タイプ フィールドの説明
fcd-file-status
ユーザファイルの状態。このフィールドは、COMMIT または ROLLBACK 操作以外のすべての操作の後に、操作の状態を通知する標準のファイル状態値で更新されます。『fcd-access-mode』および『fcd-status-type』も参照してください。
fcd-status-key-1 pic x
fcd-status-key-2 pic x
fcd-length pic xx comp-x FCD の長さ。FCD3 の場合のみ。
fcd-version pic x comp-x バージョン番号
説明
0 FCD2
1 FCD3
fcd-organization pic x comp-x ファイルの編成
説明
0 行順
1
2 索引
3 相対
fcd-access-mode pic x comp-x ユーザ状態インジケータとアクセスモードインジケータ。

ユーザ状態は、ビット 7 で示されます。ビット 7 は、ファイル状態を定義した場合に設定されます。ファイル状態を定義すると、一部の操作 (RETRYLOCK など) の実行方法に影響する場合があります。このビットは、ファイルハンドラを直接呼び出す場合に設定する必要があります。ただし、ファイル状態は、fcd-file-status から直接取得します。

アクセスモードは、次に示すビット 6~0 で示されます。

説明
0 順アクセスモード
4 ランダムアクセスモード
8 動的アクセスモード
fcd-open-mode pic x comp-x オープンモード
説明
0 入力用のオープン
1 出力用のオープン
2 入力および出力用のオープン
3 EXTEND
128 ファイルの終了

ファイルを開く前にこのフィールドを 128 に設定する必要があります。

fcd-recording-mode pic x comp-x レコードモード
説明
0 固定
1 可変
fcd-file-format pic x comp-x ファイル形式
説明
0 デフォルト形式
1 C-ISAM 形式
3 IDXFORMAT"3" 形式
4 IDXFORMAT"4" 形式
8 IDXFORMAT"8" 形式
11 メインフレーム印刷形式
14 ヒープファイル
15 ESDS ファイル
fcd-device-flag pic x comp-x デバイスフラグ
説明
0 標準
1 デバイス
2 標準入力
3 標準出力
4 標準エラー
5 無効な名前
6 入力パイプ
7 出力パイプ
8 入出力パイプ
9 ライブラリ
10 ディスクファイル
11 ヌル
12 ディスクリダイレクト
13 マップなし
fcd-lock-action pic x comp-x 予約済みフィールド
fcd-data-compress pic x comp-x データ圧縮ルーチンインジケータ
説明
0 圧縮なし
1~127 Micro Focus データ圧縮ルーチン番号 (1=CBLDC001)
128~255 ユーザ定義データ圧縮ルーチン番号 (128=USRDC128)
fcd-blocking pic x comp-x 次の値で示される NODESIZE (バイト数)
説明
0 システムにより決定されるノードの長さ
1 512
2 1024
4 4096
6 16384
fcd-idxcache-size pic x comp-x キャッシュされたメモリに格納されている索引ノードの数。4~64 の数値を指定する必要があります。0 に設定すると、デフォルトの 16 が使用されます。
fcd-percent pic x comp-x パーセントインジケータ
fcd-block-size pic x comp-x データレコードのブロックサイズ (バイト数)
説明
0 ブロックなし
12 4096
13 8192
14 16384
15 32768
16 65536

索引ファイルと相対ファイルについては、ゼロ以外の値を設定するとパフォーマンスが低下する場合があります。

fcd-flags-1 pic x comp-x
ビット 7 メインフレーム互換性ビット。このビットを設定すると、ファイル特性を、プログラムで指定したファイル特性と一致させる必要がなくなります。
ビット 5 READ および START 操作によって、レコード領域にはキーのみが返されます。
ビット 1 TRACE=ON
ビット 0 プログラムには、このファイルの宣言が含まれます。
fcd-flags-2 pic x comp-x
ビット 0 CONVERTDBSPACE=ON
fcd-mvs-flags pic x comp-x メインフレームエミュレーションフラグ
ビット 2 ファイルは暗黙ファイル (ACCEPT または DISPLAY) になります。
ビット 1 Amode = 31 ビット
ビット 0 Amode = 24 ビット
fcd-status-type pic x comp-x 状態の種類
ビット 7 ON = ANSI 85 COBOL、OFF = ANSI 74 COBOL
ビット 6 SPACEFILL=OFF
ビット 5 STRIPSPACE=OFF
ビット 4 EXPANDTAB=OFF
ビット 3 LSRECDELIM=0A
ビット 2 INSERTTAB=ON
ビット 1 INSERTNULL=ON

ビット 1 と 2 は、オープン時にファイルハンドラによって設定されるかまたは設定解除されます。これは、N および T ランタイムシステムスイッチの設定によって決まります。これらのビットは、OPEN 操作の後に設定または設定解除して、N および T ランタイムシステムスイッチをオーバーライドすることができます。

fcd-other-flags pic x comp-x
ビット 7 OPTIONAL ファイル (OPEN INPUT)
ビット 6 IGNORELOCK=ON
ビット 5 OPTIONAL 以外 (OPEN I/O および EXTEND)
ビット 4 ファイル名は EXTERNAL になります。
ビット 2 NODETECTLOCK 指令の有効化
ビット 1 複数のリールファイル (レコード順)
ビット 0 行送りファイル (レコード順)
fcd-trans-log pic x comp-x
ビット 7 OPENINPUTSHARED=ON
ビット 5 READSEMA=OFF
ビット 4 EXPANDPOSITIONING=ON
ビット 1 FASTREAD=OFF
ビット 0 SUPPRESSADV=ON
fcd-locktypes pic x comp-x
ビット 7 言語間ロック (LOCKTYPE 1 または 2)
ビット 6 SHARING WITH READ ONLY
ビット 5 個別のロック ファイル (LOCKTYPE 2)
ビット 4 RUNITLOCKDETECT=OFF
ビット 3 NFS ファイルのロックを使用します。
ビット 2 HP 互換で NFS ファイルロックを使用します。
fcd-fs-flags pic x comp-x Fileshare フラグ
ビット 7 トランザクション ログ処理
fcd-config-flags pic x comp-x
ビット 7 WRITETHRU
ビット 6 相対バイトアドレスを使用します。
ビット 5 現在のレコードを更新します。
ビット 4 FCD2 の場合、相対バイトアドレスの場合は、 fcd-reladdr-offset ではなく fcd-reladdr-big を使用します。
ビット 1 呼び出し状態変換ルーチン
ビット 0 IGNORELOCK が必要な場合は設定
fcd-misc-flags pic x comp-x
ビット 7 HOSTFD オプション (オープン時に割り当てるレコード領域)
ビット 1 EXTERNAL 構文で定義されたファイル
ビット 0 ロックでクローズされたファイル
fcd-config-flags2 pic x comp-x
ビット 7 EBCDIC 文字の大小順序を使用します。
ビット 6 ファイルに WRITE AFTER ADVANCING を指定する場合は設定します。
ビット 5 ファイルに WRITE BEFORE ADVANCING を指定する場合は設定します。
ビット 4 指定された ADV
ビット 3 可変長ファイルでの最小長チェックを無視します。
fcd-lock-mode pic x comp-x 共有可能なファイル用のロックモードフラグ
ビット 7 複数レコードに対するロック
ビット 6 WRITELOCK 指令の有効化
ビット 5 RETRYOPEN=ON
ビット 4 SKIPLOCK =ON
ビット 3 RETRYLOCK=ON
ビット 2 ロックモード MANUAL
ビット 1 ロックモード AUTOMATIC
ビット 0 ロックモード EXCLUSIVE
fcd-shr2 pic x comp-x その他のフラグ
ビット 1 RETRYTIME=ON
ビット 0 STARTUNLOCK=ON
fcd-nls-id pic xx comp-x NLS 識別子
fcd-fs-file-id pic xx comp-x 予約済みフィールド
fcd-retry-open-count pic xx comp-x RETRYOPEN 回数フィールド
fcd-name-length pic xx comp-x ファイル名の長さ
fcd-idxname-length pic xx comp-x 予約済みフィールド
fcd-retry-count pic xx comp-x 再試行回数 (RETRYLOCK がオンの場合に使用)
fcd-key-id pic xx comp-x 参照キー (索引ファイルの場合)。

このフィールドでは、ランダム READ 操作に使用する参照キーを識別します。主キーを指定するには、このフィールドをゼロに設定します。例えば、最初に定義された副キーを指定するには、値 1 を使用します。2 番目に定義された副キーを指定するには、値 2 を使用します。

fcd-line-count pic xx comp-x 行数 (順ファイルの場合)。

このフィールドでは、ファイルの書込み時にスキップする行の数を指定します。例えば、次のようになります。

WRITE AFTER ADVANCING line-count LINES
fcd-use-give pic xx comp-x 予約済みフィールド
fcd-key-length pic xx comp-x 有効なキーの長さ。

索引ファイルで START 操作を使用している場合は、キー全体ではなく、キーの先頭部分のみを指定できます。このフィールドは、比較で使用するバイト数に設定する必要があります。このフィールドには、ゼロよりも大きく、使用中のキーよりも小さい値を指定する必要があります。

fcd-current-rec-len FCD3: pic x(4) comp-x 現在のレコードの長さ (バイト数)
FCD2: pic x(2) comp-x
fcd-min-rec-length pic x(4) comp-x 最小レコード長 (バイト数)
fcd-max-rec-length pic x(4) comp-x 最大レコード長 (バイト数)
fcd-session-id pic x(4) comp-x 予約済みフィールド
fcd-reladdr-offset FCD3: pic x(8) comp-x 相対バイトアドレス (『fcd-config-flags、ビット 4』も参照)。このフィールドの値は、OPEN 文の後には定義されません。
FCD2: pic x(4) comp-x
fcd-reladdr-big pic x(8) comp-x 8 バイトの相対バイトアドレス。FCD2 の場合は、個別フィールドになります。FCD3 の場合は、fcd-reladdr-offset を再定義します。FCD2 と FCD3 の間の互換性のために指定します。
fcd-max-rel-key pic x(8) comp-x 最大相対キー
fcd-relative-key pic x(8) comp-x 相対キー
fcd-handle pointer ファイルハンドル
fcd-record-address pointer レコード領域へのポインタ
fcd-filename-address pointer ファイル名領域へのポインタ
fcd-idxname-address pointer 予約済みフィールド
fcd-key-def-address pointer キー定義ブロックへのポインタ
fcd-col-seq-address pointer 文字の大小順序へのポインタ (何も指定されていない場合はヌル)
fcd-fildef-address pointer 予約済みフィールド
fcd-dfsort-address pointer 予約済みフィールド