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

Document created by Masaaki_Iyama Employee on Jun 18, 2015Last modified by Masaaki_Iyama Employee on Jun 18, 2015
Version 1Show Document
  • View in full screen mode

文書番号: JTEC000987

製品名: CA-Easytrieve Plus

バージョン: ALL

OS: z/OS, MSP, VOS3

 

Question

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

 

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

Attachments

    Outcomes