我的cobol字符串不允许我将它分开?

时间:2014-03-13 20:41:12

标签: cobol

如何在Cobol中将每行上的文字分开以写回屏幕或文件?

代码:

   05 CONSTPARM             PIC X(78) VALUE             
   'SW89JSXX PROV RANGE 01: XXXXXXX THRU XXXXXXX   ' 
   -      'TAXONOMY: XXXXXXXXXX'.                           

2 个答案:

答案 0 :(得分:1)

我们在COBOL中没有实际的字符串。字段只要定义为。

但是,如果你想要打破某些东西",我们有一个名为UNSTRING的动词:

UNSTRING CONSTPARM INTO xxxx DELIMITED BY ALL SPACE
                        yyyy DELIMITED BY ALL SPACE
                        zzzz DELIMITED BY ALL SPACE
                        lackofforethought DELIMITED BY ALL SPACE
                        etc

您必须为要接收数据的字段命名。

如果多次使用相同的UNSTRING,则在执行UNSTRING之前将所有目标字段设置为初始值。否则可以获得数据"遗留下来"从之前使用UNSTRING

开始

有关完整说明,请参阅您的手册。企业COBOL语言参考。 UNSTRING非常强大,并且有很多选择。

要将字段放在一起(或包装圣诞礼物),请使用STRING

答案 1 :(得分:0)

您是否尝试过参考修改?参考修改类似于使用来自许多其他语言的子串。它可用于通过提供开始的位置和要返回的字符数来选择另一个数据项的段。引用的字段保持不变。

05 CONSTPARM             PIC X(78) VALUE             
'SW89JSXX PROV RANGE 01: XXXXXXX THRU XXXXXXX   ' 
-      'TAXONOMY: XXXXXXXXXX'.                   
05 WS-FIRST-FOUR         PIC X(5).
05 WS-RANGE              PIC X(5).

MOVE CONSTPARM(1:4)  TO WS-FIRST-FOUR.    
MOVE CONSTPARM(15:5) TO WS-RANGE.

DISPLAY 'WS-FIRST-FOUR = ' WS-FIRST-FOUR.    
DISPLAY 'WS-RANGE = ' WS-RANGE.

您在 WS-FIRST-FOUR 中的价值将是' SW89 '你在 WS-RANGE 中的价值将是' RANGE '。

有关其他示例和更多详细信息,请访问此有用的指南:http://www.fluffycat.com/COBOL/Reference-Modification/