Easytrieve Plus : データをビット単位で扱うには?

book

Article ID: 185729

calendar_today

Updated On:

Products

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

Issue/Introduction

Question
データをビット単位で扱うには?

Environment

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

Resolution

Answer
EASYPLUSではデータ属性としてビット・タイプは持っていません。 A, N, P, U, Bのいずれかで定義します。代入や条件比較は16進数を使用して行います。
ビット・データの操作として、次のような機能があります。
・フィールドのビット処理における条件比較
・代入ステートメントでの論理演算

[フィールド定義の記述]
フィールド名      スタート位置      フィールド長      属性

[条件比較の記述]
IF     フィールド名-1     関係演算子     フィールド 名-2
                                                             16進リテラル

※関係演算子 : [NOT] ON、OFF いずれかの指定

[論理演算の記述]
フィールド名-1     =      フィールド名-2     論理演算子     フィールド名-3

※ 論理演算子 : AND、OR、XOR いずれかの指定


記述例
(例) ビット操作により、金額の符合の変換を行う

FILE     FILEA
CHIKU      1     3     N
KIN           4     2     P 0     MASK    HEX
WーKIN     W    2     P 0     MASK    HEX
*
JOB
IF    CHIKU   =    401
    W-KIN =   KIN   AND    X'FFFE'
ELSE
    W-KIN =   KIN   OR     X'OOOF'
END-IF
PRINT
*
REPORT   NODATE   NOPAGE
TITLE 01    '符合変換テスト'
LINE 01     CHIKU    KIN     W-KIN

※MASK HEXはデータを16進コードでレポートに出力する指定です。

[出力結果]
                                                                     符合変換テスト
                                                            CHIKU         KIN         W-KIN
                                                               401         123D          123C
                                                               402         123D          123F
                                                               401         123D          123C

ビットの操作は指定した論理演算子により、以下のとおり行なわれます。(操作内容は下記参考資料にあるとおり)
W-KIN   =   KIN   AND   X'FFFE' の論理演算(AND)の場合
KIN   123D     →          0001 0010 0011 1101
                                       ↓       ↓       ↓       ↓
        X'FFFE'   →         1111  1111  1111 1110
        AND演算                ↓       ↓       ↓       ↓
W-KIN 123C   ←          0001 0010 0011 1100

Additional Information

Old Japanese Knowledge document ID: JTEC000987