2012-03-13 7 views
2

어떻게 메인 프레임 COBOL에서 비트 단위 논리 연산을 표현할 수 있습니까? 마이크로 포커스 COBOL에서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 

을하지만, 또는 적어도 기업 COBOL에서 (메인 프레임에 이런 연산자가 없습니다 보인다 z/OS 용).

메인 프레임 COBOL에서 비트 논리 연산을 시뮬레이션/복제하는 방법이 있습니까?

답변

3

최상의 베팅은 'CEESITST'인 것처럼 보입니다. z/OS COBOL에있는 것으로 보입니다. 다른 비트 조작 프로그램뿐만 아니라이를 사용하는 예제를 발견했습니다.

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

+3

CEESITST는 실제로 LE 기반 응용 프로그램에서 사용할 수있는 언어 환경 호출 가능 서비스입니다. Enterprise COBOL, Enterprise PL/I, C/C++ (해당 언어에는 비트 연산자가 있음) 및 어셈블러 (동일). z/OS 정보 센터의 언어 환경 섹션에있는 다른 LE 호출 가능 서비스와 함께 문서화되어 있습니다. – cschneid

+0

설명해 주셔서 감사합니다. 아주 좋아. – ahillman3

+0

Micro Focus COBOL에서 볼 수 있듯이 최신 COBOL 표준 (그 해에 나를 도망칩니다)에 비트 조작 기능이 추가되었습니다. 불행하게도 IBM은 1985 년 표준 + 엑스트라 (주로 OO COBOL)로 과거에 머물러있어 보였으 나 21 세기에 Enterprise COBOL을 도입 할 조짐은 보이지 않습니다. – zarchasmpgmr

3

비트를 공유하지 않는 함께 당신 AND 값, 당신은 항상 제로를 얻을 경우, 그래서 당신이 OR을 의미 가정거야. 이것은 OR 독립 비트가 다중 비트 값을 구성하는 경향이 있기 때문에 의미가 있습니다.

termA OR termB 

하고 :

비트 마스크가 다른 단어와 상호 작용하지 않는 한 용어에서와 같이, 서로 독립적 마음에두고

는 사이에는 차이가 없다
termA + termB 

귀하의 용어는 x'1', x'2' 등 (아무 x'03' 또는 x'ff'를)되고, 여기에 모든 독립적 그래서 그들을 잘 작동합니다 추가 :

COMPUTE TARGET = WCC-NOP + WCC-RESET 

이제는 아무 것도 시작하지 않는 비트를 설정하는 것이 좋지만 삭제에는 유용하지 않습니다. 그러나 청산에 대한 유사한 트릭을 사용할 수 있습니다

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

설정 또는 (관계없이 현재 상태의) 임의의 시작 지점에서 그들을 삭제하는 것은 조금 까다 롭습니다하고 또한 쉽게 할 수 없으며, 빼기.