Easytrieve Plus : IFステートメントでSPACE、ZEROのキーワードは指定できるか? SPACE、ZEROキーワードの使用方法は?

book

Article ID: 185556

calendar_today

Updated On:

Products

EASYPROCLIB CA Easytrieve Report Generator CA Easytrieve Report Generator for Common Services

Issue/Introduction

Question
IFステートメントでSPACE、ZEROのキーワードは指定できるか?
SPACE、ZEROキーワードの使用方法は?

Environment

z/OS, MSP, VOS3, IBM, FUJITSU, HITACHI

Resolution

Answer
以下のとおり使用可能です。
フィールドのすべての位置にスペースまたはゼロが含まれているかどうかの判断は データ属性チェックという機能を使用して行います。

[データ属性チェックの記述]
                                          (主 語)                           (目的語)
IF                                  フィールド名                [ NOT ] SPACE
DO WHILE                                                          SPACES
RETRIEVE...WHILE                                           ZERO
                                                                            ZEROS
                                                                            ZEROES
                                                               ↑
                                            '='記号は必要ありません
SPACE、SPACESまたは、ZERO、ZEROS、ZEROESはそれぞれどのキーワードを指定してもかまいません。

ワーク・フィールドの定義でVALUEパラメータのあとに、「VALUE SPACE」「VALUE ZERO」と指定することはできません。
誤)                                                                               正)
FLD1    S     5     P 0     VALUE ZERO                       FLD1    S    5    P 0     VALUE 0
FLD2    S     5     A        VALUE SPACE                     FLD2    S    5    A        VALUE ' '


MOVEステートメントでは、移送データの指定にSPACE、ZEROキーワードを使用できます。この場合、複数の受け取りフィールドを指定できます。
記述例
(例1) 入力レコードのキーの値がスペースでなければそのままのデータを、スペースの場合はスペース・データをファイルに出力し、結果をリスト・アウトする。
FILE    FILEA
KEY-A    1    4    A
*
FILE    FILEB
KEY-B    1    4    A
FLD-1    5    5     A
FLD-2  10  14     A
*
JOB
IF  KEY-A   NOT   SPACE
    MOVE LIKE FILEA TO FILEB
ELSE
    MOVE SPACE TO KEY-B FLD-1 FLD-2
END-IF
PRINT
PUT FILEB
*
REPORT
TITLE 1   '*** ファイル更新リスト ***'
LINE  1    FILEA:RECORD-COUNT KEY-A


(例2) IFステートメント、MOVEステートメントにおける「SPACE」「ZERO」の使用例
誤)                                                                                       正)
IF   FLD1   =   SPACE                                                         IF FLD1 SPACE
IF   FLD1   NE   SPACE                                                      IF FLD1 NOT SPACE
IF   FLD1   =   ZERO                                                           IF FLD1 ZERO
IF   FLD1   NE  ZERO                                                         IF FLD1 NOT ZERO
MOVE   ' '   TO   FLD1  FLD2  FLD3                                  MOVE  SPACE  TO  FLD1 FLD2 FLD3
MOVE   0   TO   FLD1  FLD2  FLD3                                  MOVE  ZERO  TO  FLD1 FLD2 FLD3

Additional Information

Old Japanese Knowledge document ID: JTEC000996