CLEAR の例
- 図 1 に、CLEAR 命令の例を示します。
- 図 2 に、CLEAR レコード様式のフィールドの初期化の例を示します。
- RESET の例の例は、フィールドに実際に命令が実行される場合を除き、 CLEAR にも適用されます。
図 1. CLEAR 命令
*..1....+....2....+....3....+....4....+....5....+....6....+....7...+....
D*Name++++++++++ETDsFrom+++To/L+++IDc.Keywords+++++++++++++++++++++++++
D DS1 DS
D Num 2 5 0
D Char 20 30A
D
D MODS DS OCCURS(2)
D Fld1 1 5
D Fld2 6 10 0
* In the following example, CLEAR sets all subfields in the data
* structure DS1 to their defaults, CHAR to blank, NUM to zero.
/FREE
CLEAR DS1;
// In the following example, CLEAR sets all occurrences for the
// multiple occurrence data structure MODS to their default values
// Fld1 to blank, Fld2 to zero.
CLEAR *ALL MODS;
/END-FREE
図 2. CLEAR レコード様式のフィールドの初期化
*..1....+....2....+....3....+....4....+....5....+....6....+....7...+....
A* Field2 および Field3 は出力可能フィールドとして定義され
A* ていて、CLEAR 命令による影響を受けます。また、標識 10
A* は、入力専用フィールドの条件付けを行っている場合にも、
A* CLEAR 命令で変更することができます。これは、CLEAR 命令で
A* *ALL が指定されていないため、すべての標識が出力フィールド
A* として取り扱われるためです。
A*
A*N01N02N03T.Name++++++RLen++TDpBLinPosFunctions++++++++++++++++++++*
A R FMT01
A 10 Field1 10A I 2 30
A Field2 10A O 3 30
A Field3 10A B 4 30
A*
A* DDS ソース・ステートメントの終わり
A*
F*Flename++IPEASFRlen+LKlen+AIDevice+.Keywords+++++++++++++++++++++++++
FWORKSTN CF E WORKSTN INCLUDE(FMT01)
F
D*Name++++++++++ETDsFrom+++To/L+++IDc.Keywords++++++++++++++++++++++++
D IN C 'INPUT DATA'
/FREE
CLEAR FMT01;
WRITE FMT01;
// PF03 が押されるまでループします。
DOW NOT *IN03;
READ FMT01;
*INLR = %EOF;
// PF04 で入力フィールドが出力フィールドに転送されます。
IF *IN04;
Field2 = Field3;
Field3 = Field1;
CLEAR *IN04;
ENDIF;
Field1 = IN;
// PF11 が押されると、出力または両方と定義された
//レコード様式のすべてのフィールドが、初期化ステップ後の
//値にリセットされます。
IF *IN11;
RESET FMT01;
CLEAR *IN11;
ENDIF;
// PF12 が押されると、出力または両方と定義された
// レコード様式のすべてのフィールドが消去されます。
IF *IN12;
CLEAR FMT01;
CLEAR *IN12;
ENDIF;
IF NOT *IN03;
WRITE FMT01;
ENDIF;
ENDDO;
*INLR = *ON;
/END-FREE