如何在大型机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'.在Micro Focus COBOL中,我可以这样做:
WCC-NOP B-AND WCC-RESET但是在大型机上似乎没有这样的运算符(或者至少在Enterprise COBOL for z/OS中没有)。
有没有一些(希望简单明了!)在大型机COBOL中模拟/复制按位逻辑操作的方法?
发布于 2012-03-13 21:08:09
您的最佳选择似乎是'CEESITST',因为它似乎存在于z/OS COBOL中。我找到了一个使用它和其他位操作程序的例子。
http://esj.com/articles/2000/09/01/callable-service-manipulating-binary-data-at-the-bit-level.aspx
发布于 2012-04-02 17:11:33
如果你将不共享位的值AND在一起,你总是会得到0,所以我假设你指的是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从任意的起始点设置或清除它们(不管它们的当前状态)有点棘手,并且不能使用加法和减法轻松完成。
https://stackoverflow.com/questions/9684334
复制相似问题