2012-03-13 57 views
2

メインフレームCOBOLでビット単位の論理演算をどのように表現できますか?COBOLのビット単位論理演算子?

私が持っている:のMicro Focus COBOLで

 01 WRITE-CONTROL-CHAR. 
      03 WCC-NOP   PIC X VALUE X'01'. 
      03 WCC-RESET   PIC X VALUE X'02'. 
      03 WCC-PRINTER1  PIC X VALUE X'04'. 
      03 WCC-PRINTER2  PIC X VALUE X'08'. 
      03 WCC-START-PRINTER PIC X VALUE X'10'. 
      03 WCC-SOUND-ALARM PIC X VALUE X'20'. 
      03 WCC-KEYBD-RESTORE PIC X VALUE X'40'. 
      03 WCC-RESET-MDT  PIC X VALUE X'80'. 

を、私はのような何かができる:

WCC-NOP B-AND WCC-RESET 

が、そこにメインフレームには、そのようなオペレータがいない(またはEnterprise COBOLでない少なくともらしいですz/OSの場合)。

メインフレームのCOBOLでビット単位の論理演算をシミュレート/レプリケートする方法はありますか(まったく簡単ですが)。

答えて

3

ベスト・ベットは、z/OS COBOLに存在するように見えるため、「CEESITST」と表示されます。他のビット操作プログラムと同様にその例を使用しました。

http://esj.com/articles/2000/09/01/callable-service-manipulating-binary-data-at-the-bit-level.aspx

+3

CEESITSTは実際には、エンタープライズCOBOL、エンタープライズPL/I、C/C++(これらの言語にはビット演算子がありますが)、およびアセンブラ(同じ)など、LE対応アプリケーションで使用可能な言語環境呼び出し可能サービスです。これは、z/OSインフォメーション・センターの「言語環境」セクションにある他のLE呼び出し可能サービスとともに文書化されています。 – cschneid

+0

清算していただきありがとうございます。非常に素晴らしい。 – ahillman3

+0

Micro Focus COBOLのように、最新のCOBOL標準(現時点では今年のエスケープ)がビット操作機能を持つようになりました。残念なことに、IBMは1985年の標準+エクストラ(主にOO COBOL)で過去に詰まっているようであり、21世紀にエンタープライズCOBOLを導入する兆候は見られません。 – zarchasmpgmr

3

ビットを共有していないあなたAND一緒値ならば、あなたは常にはゼロになりますので、私はあなたがORを意味と仮定するつもりです。これは、ORの独立ビットを使用してマルチビット値を構成する傾向があるため意味をなさないものです。念頭に置いて

、単一用語に他の用語と相互作用しないように、ビットマスクは、互いに独立しているとき、差がない:

termA OR termB 

と:

は、
termA + termB 

あなたの用語はx'1'x'2'など(無x'03'またはx'ff')をされ、ここにすべて独立しているので、それらが正常に動作する必要があります追加:

これは、何もしないで始まるビットを設定するのには良いが、クリアにはそれほど役に立ちません。しかし、あなたがクリアするための同様のトリックを使用することができます。

COMPUTE TARGET = 255 - WCC-NOP - WCC-RESET 

設定または(現在のステートに関係なく)任意の出発点からそれらをクリアすると少しトリッキーですと追加して簡単に行うことができず、減算。