Easytrieve Plus : IFステートメントでSPACE、ZEROのキーワードを指定
search cancel

Easytrieve Plus : IFステートメントでSPACE、ZEROのキーワードを指定

book

Article ID: 185556

calendar_today

Updated On:

Products

EASYPROCLIB Easytrieve Report Generator 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