バージョン 4.2.5
 —  ステートメント  —

WRITE WORK FILE

WRITE WORK [FILE] work-file-number [VARIABLE] operand1

このドキュメントでは、次のトピックについて説明します。

構文図で使用されている記号については、「構文記号」を参照してください。

関連ステートメント:DEFINE WORK FILE | READ WORK FILE | CLOSE WORK FILE| DOWNLOAD PC FILE

関連機能グループ:「ワークファイル/PC ファイルの制御


機能

WRITE WORK FILE ステートメントは、物理順ワークファイルにレコードを書き込むために使用します。

このステートメントは、Com-plete、CICS、CMS、TSO、TIAM、またはバッチモード環境で実行されるプログラムでのみ使用できます。 適切な JCL またはシステムコマンドを実行してワークファイルを割り当てる必要があります。 詳細については、『オペレーション』ドキュメントを参照してください。 ワークファイル割り当ての詳細については、『パラメータリファレンス』ドキュメントでプロファイルパラメータ WORK を参照してください。

1 つのプログラム内または処理ループ内でワークファイルを作成し、そのファイルを後続の別の処理ループまたはプログラムで READ WORK FILE ステートメントを使用して読み取ることもできます。

注意:
Unicode およびコードページのサポートについては、『Unicode およびコードページのサポート』ドキュメントの「メインフレームプラットフォーム上のワークファイルと出力ファイル」を参照してください。

Top of page

構文説明

オペランド定義テーブル:

オペランド 構文要素 フォーマット ステートメント参照 ダイナミック定義
operand1 C S A G   A U N P I F B D T L C G   不可

注意:
Natural Connection ではフォーマット C もフォーマット G も使用できません。

構文要素の説明:

work-file-number
ワークファイル番号:

使用するワークファイル番号(Natural に定義されたもの)を指定します。

VARIABLE
可変エントリ:

同一ワークファイルに対し、異なる WRITE WORK FILE ステートメントで、異なるフィールドを持つレコードを書き込むことができます。 この場合、すべての WRITE WORK FILE ステートメントに VARIABLE を指定する必要があります。 外部ファイルに書き込まれるレコードは可変フォーマットです。 Natural は出力ファイルをすべて可変ブロックとして書き出します(ユーザーが実行 JCL にレコードフォーマットとブロックサイズを指定しない場合)。

オペランドリストにダイナミック変数(WRITE WORK FILE ステートメントの異なる実行に対してサイズが変わる)が含まれている場合、VARIABLE エントリはすべての WRITE WORK FILE ステートメントに指定する必要があります。

変数インデックス範囲:

ワークファイルに配列を書き込む場合、配列に変数インデックス範囲を指定できます。 次に例を示します。

WRITE WORK FILE work-file-number VARIABLE #ARRAY (I:J)
operand1
フィールド:

operand1 では、ワークファイルに書き込むフィールドを指定します。 ワークファイルに書き込むフィールドには、データベースフィールド、ユーザー定義変数、または READ WORK FILE ステートメントを使用して別のワークファイルから読み取ったフィールドを指定できます。

データベースの配列は、ワークファイルに書き込むオカレンスを示すインデックスの単一範囲で参照できます。 データベースファイルのグループは、グループ名で参照できます。 グループに属するすべてのデータベースフィールドがワークファイルに書き込まれます。

Top of page

フィールドの外部表示

WRITE WORK FILE ステートメントで書き込まれるフィールドは、その内部定義に従って外部ファイルに表示されます。 フィールド値は編集されません。

A および B フォーマットのフィールドについては、外部ファイルでのバイト数は、Natural プログラムで定義された内部長さ定義と同じです。 値は編集されず、小数点は表示されません。

N フォーマットのフィールドについては、外部ファイルでのバイト数は、小数点の前後の内部桁数の合計です。 小数点は外部ファイルには表示されません。

P フォーマットのフィールドについては、外部ファイルでのバイト数は、小数点の前後の桁数の合計に 1(符号用)を加算し、それを 2 で割ってバイト単位に切り上げたものです。

注意:
フォーマット変換は、ワークファイルに書き込まれるフィールドに対しては行われません。

フィールド表現の例:

フィールド定義 出力レコード
#FIELD1 (A10) 10 バイト
#FIELD2 (B15) 15 バイト
#FIELD3 (N1.3) 4 バイト
#FIELD4 (N0.7) 7 バイト
#FIELD5 (P1.2) 2 バイト
#FIELD6 (P6.0) 4 バイト

注意:
数値フィールド(フォーマット N または P)に対する Natural システム関数 AVERNAVERSUM、または TOTAL をワークファイルに書き込むとき、これらのフィールドの内部長は 1 桁拡張されます(例:フォーマット P3 のフィールドの SUM は P4 に拡張されます)。 これにより、ワークファイルを読み取るときに注意する必要があります。

Top of page

ラージおよびダイナミック変数の処理

ワークファイルタイプ 処理
UNFORMATTED ワークファイルタイプ UNFORMATTED は、最大レコード長を超えるサイズの変数を書き込むために使用できます。 「ラージ変数およびダイナミック変数によるワークファイルへのアクセス」も参照してください。
FORMATTED ダイナミック変数は現在定義されている長さ(長さ 0 を含む)で書き込まれます。

Top of page

** Example 'WWFEX1': WRITE WORK FILE                                    
************************************************************************
DEFINE DATA LOCAL                                                       
1 EMPLOY-VIEW VIEW OF EMPLOYEES                                         
  2 PERSONNEL-ID                                                        
  2 NAME                                                                
END-DEFINE                                                              
*                                                                       
FIND EMPLOY-VIEW WITH CITY = 'LONDON'                                   
  WRITE WORK FILE 1                                                     
        PERSONNEL-ID NAME                                              
END-FIND                                                                
*                                                                       
END 

Top of page