如何删除 COBOL 中的前导零和尾随空格

How to remove leading zeroes & trailing spaces in COBOL

你好我有读取输入文件的需求,每条记录包含一定的记录

01 FILE-DATA.
   05 FILE-FIELD-A     PIC 9(18).
   05 FILLER           PIC X(01) VALUE '*'.
   05 FILE-FILED-B     PIC X(30).
   05 FILLER           PIC X(01) VALUE '*'.

输入数据:12345*ACBDE12345

当我解开文件记录的字符串时,每个文件都得到 000000012345(前导零)和 'ABCDE12345 '(尾随空格)。

奇怪的是,文件数据以如此可变的长度发送到固定数据结构中,要解决这个问题,我该如何删除前导零和尾随空格。

对于前导零:使用 COBOL 编辑

 77 FILE-FIELD-EDITED  PIC Z(17)9.

MOVE FILE-FIELD-A TO FILE-FIELD-EDITED

要删除尾随空格(或可能是 FILE-FIELD-EDITED var 上的前导空格):使用固有的 TRIM 函数:

STRING FUNCTION TRIM (FILE-FIELD-EDITED LEADING)
       '*'
       FUNCTION TRIM (FILE-FIELD-B TRAILING)
       DELIMITED BY SIZE
       INTO SOME-OUTPUT-FIELD
END-STRING

这将给出上面显示的输出。

要了解有关编辑和内部函数的更多信息,请参阅您的 COBOL 实现的语言参考(例如,该实现可能没有 LEADINGTRAILING 选项)或对于一般 COBOL current COBOL draft standard.