首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >COBOL中的逐位逻辑运算符?

COBOL中的逐位逻辑运算符?
EN

Stack Overflow用户
提问于 2012-03-13 20:55:47
回答 2查看 3.8K关注 0票数 3

如何在大型机COBOL中表示按位逻辑操作?

我有:

代码语言:javascript
复制
       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中,我可以这样做:

代码语言:javascript
复制
WCC-NOP B-AND WCC-RESET

但是在大型机上似乎没有这样的运算符(或者至少在Enterprise COBOL for z/OS中没有)。

有没有一些(希望简单明了!)在大型机COBOL中模拟/复制按位逻辑操作的方法?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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

票数 3
EN

Stack Overflow用户

发布于 2012-04-02 17:11:33

如果你将不共享位的值AND在一起,你总是会得到0,所以我假设你指的是OR。这是有意义的,因为您倾向于使用OR独立的位来构造多位的值。

考虑到这一点,当位掩码彼此独立时,因为在单个项中不与其他项交互,则在以下项之间没有区别:

代码语言:javascript
复制
termA OR termB

和:

代码语言:javascript
复制
termA + termB

您的术语在这里都是独立的,是x'1'x'2'等等(没有x'03'x'ff'),所以添加它们应该没问题:

代码语言:javascript
复制
COMPUTE TARGET = WCC-NOP + WCC-RESET

现在,这对于从零开始设置位是很好的,但对于清除它们就没有那么有用了。但是,您可以使用类似的技巧来清除:

代码语言:javascript
复制
COMPUTE TARGET = 255 - WCC-NOP - WCC-RESET

从任意的起始点设置或清除它们(不管它们的当前状态)有点棘手,并且不能使用加法和减法轻松完成。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9684334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档