在Cobol中如何将每行的文字分开以写回屏幕或文件?
代码: 05 CONSTPARM PIC X(78) VALUE
'SW89JSXX PROV RANGE 01: XXXXXXX THRU XXXXXXX '
- 'TAXONOMY: XXXXXXXXXX'.
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
。
您是否尝试过引用修改?引用修改类似于许多其他语言的子字符串的使用。它可以通过提供起始位置和返回字符的数量来选择另一个数据项的片段。引用的字段保持不变。
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/