如何在COBOL中访问字符串中的特定字符?
例如,如果字符串是"工作",我必须访问字符串中的字符'w'并将其存储在字符中.我需要匹配的角色,而不是角色的位置.
例如在c中,我们将执行以下操作来提取字符串中的第i个字符,
char data[5] = "work";
char temp;
temp = data[3];
Run Code Online (Sandbox Code Playgroud)
temp将具有值'k'
现在我在COBOL中需要相同的东西.
首先要理解的是,基于C的数组索引为零,而基于COBOL的数组为1.
下一个COBOL和C具有非常不同的表示字符串的方式.在C中,字符串通常存储为字符数组,字符串的结尾通常使用二进制零(null\0)表示.COBOL没有这样的惯例.字符串存储在指定长度的命名数据项中.这些项目下开展工作,存储器通常声明,并与他们的类型相关联的图片条款"X"(还有其他一些可能性PICTURE条款,但"X"代表任何类型的字符).例如:
01 MY-VARIABLE PIC X(20).
Run Code Online (Sandbox Code Playgroud)
名为MY-VARIABLE的Working Storage变量声明为20个字符长.可以在PROCEDURE DIVISION中为其分配如下值.
MOVE 'work' TO MY-VARIABLE
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用称为参考修改的技术访问此字符串(或子字符串)的各种字符:
DISPLAY MY-VARIABLE(3:1)
Run Code Online (Sandbox Code Playgroud)
将显示MY-VARIABLE的第三个字符(基于1的索引),即'r'.上面括号中的第一个数字(3)表示从变量开头的偏移量,第二个数字是从该位置开始的字符数(1).
还有其他方法可以做到这一点,例如REDEFINES,其中MY-VARIABLE可以重新定义为20个1字符单元格的数组.这是一个有点过时的机制,所以我鼓励使用引用修改来访问部分字符串.
| 归档时间: |
|
| 查看次数: |
17276 次 |
| 最近记录: |