モジュールのレッスン (1/2)
ファイル定義とファイル制御
COBOL では、外部ファイル (ディスク上のテキスト アーカイブやバイナリ レコードなど) の管理は、バッチ企業アプリケーションにとって最も重要な機能の 1 つです。 COBOL は現代のデータベースよりずっと前に設計されたため、ディスク ファイルはプライマリ ストレージとして機能します。
オペレーティング システムに保存されている物理ファイルとプログラムの内部変数の接続は、次の 2 つのフェーズで行われます。
ENVIRONMENT DIVISIONの論理と物理の関連付け。DATA DIVISION内のデータ レコードの定義。
1.関連付け: FILE-CONTROL と SELECT ASSIGN
プログラム構造に特化した章では、ENVIRONMENT DIVISION について説明しました。その中の INPUT-OUTPUT SECTION には、プログラムで使用される外部ファイルを宣言する FILE-CONTROL 段落が含まれています。
プログラム内の論理ファイル (SALES-FILE など) をディスク上の実際の物理ファイル (sales.dat など) に関連付けるには、SELECT ... ASSIGN TO ... ステートメントを使用します。
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT SALES-FILE ASSIGN TO "sales.dat"
ORGANIZATION IS LINE SEQUENTIAL.SELECT SALES-FILE: プログラムがファイルを参照するために使用する論理名を定義します。ASSIGN TO "sales.dat": ディスク上の実際の物理ファイル名 (またはパス) を指定します。ORGANIZATION IS LINE SEQUENTIAL(オプション): ファイルが、各行がレコードを表すプレーン テキスト ファイルであることを示します (改行文字で区切られています)。
2. 宣言: ファイルセクションとFD
ENVIRONMENT DIVISION でファイルを関連付けた後、DATA DIVISION でそのレコードの構造を定義する必要があります。これを行うには、FILE SECTION (WORKING-STORAGE SECTION の前にある) という専用のセクションを使用します。
選択したすべてのファイルには、レコード構造を宣言する FD (ファイルの説明) エントリが必要です。
DATA DIVISION.
FILE SECTION.
FD SALES-FILE.
01 SALES-RECORD.
05 EMP-ID PIC 9(5).
05 EMP-NAME PIC X(20).
05 EMP-SALARY PIC 9(6)V99.FD SALES-FILE.: 論理名SALES-FILEのファイル説明を識別します。ピリオドで終わることに注意してください。01 SALES-RECORD.: ファイルに関連付けられたグループ構造 (レコード) を指定します。各読み取り/書き込み操作では、このメモリ構造を使用してデータが交換されます。
試してみてください
ENVIRONMENT DIVISION を完了して INPUT-OUTPUT SECTION と FILE-CONTROL 段落を宣言し、SELECT ASSIGN ステートメントを使用して論理ファイル SALES-FILE を物理ファイル 'sales.dat' に関連付けます。
ヒントを表示
環境部門と書きます。および入出力セクション。列 8 (スペース 7 個)、次に FILE-CONTROL。列 8 に入力し、最後に「Sales-FILE ASSIGN TO 'sales.dat」を選択します。列 12 (スペース 11 個)。
3 回の試行後に解決策が利用可能になります
プログラムのDATA DIVISIONとFILE SECTIONを宣言します。 SALES-FILE のファイル記述子 (FD) を定義し、これを 2 つの下位フィールドを含む SALES-RECORD という名前のレベル 01 レコードに関連付けます。 SALES-ID (4 桁の数値) と SALES-AMOUNT (5 桁の数値と 2 つの暗黙的な小数点)。
ヒントを表示
データ部を使用します。とファイルセクション。列 8、FD 販売ファイル。列 8 に 01 Sales-RECORD が続きます。列 8 とフィールド 05 SALES-ID PIC 9(4)。および 05 販売額写真 9(5)V99。列 12 の新しい行に。
3 回の試行後に解決策が利用可能になります