COBOL-根据变量

时间:2018-06-06 15:04:20

标签: cobol

如何根据变量将字符添加到字符串的开头?例如,我们用于电话号码的供应商将字符串转换为数字,该数字将电话号码的前导0除掉。当他们向我们发送报告时,我们将数字转换回字符串,但现在它没有正确的数字。我正在尝试以下方法:

IF LENGTH(TO-NUM) < 10
    SUBTRACT LENGTH(TO-NUM) FROM 10 GIVING ADD-NUM-ZERO

现在我需要弄清楚如何将ADD-NUM-ZERO数字0添加到字符串TO-NUM的开头,而不会覆盖开头的字符。

2 个答案:

答案 0 :(得分:2)

假设TO-NUM只包含数字后跟空格(或空格后跟数字),那么

1 TO-NUM PIC X(10).
1 temp-x.
 5 temp-9 pic 9(10).

if to-num not numeric
    compute temp-9 = function numval (to-num)
    move temp-x to to-num
end-if
如有必要,

将使用相同的值替换以前的内容,但使用前导零。

IF TO-NUM NOT NUMERIC语句相当于询问TO-NUM中的位数是否小于10.

例如,如果之前to-num'5551212 ',则to-num之后将为'0005551212'

如果to-num包含非数字,则需要通过将to-num解析为temp-9来提取数字。

答案 1 :(得分:1)

   Working-storage section.
   01 NUM    PIC 9(10) COMP-5.
   01 TELNUM-G.
     03 TELNUM PIC 9(10).
     03 TELNUM-S REDEFINES TELNUM.
       05 AREACODE   PIC 999.
       05 THREEDIGIT PIC 999.
       05 FOURDIGIT  PIC 9999.
   01 TELOUTPUT PIC X(13) VALUE '(AAA)TTT-NNNN'.

   Procedure division.
       Move 31234 to NUM.

       MOVE NUM TO TELNUM.
       INSPECT TELOUTPUT
         REPLACING ALL 'AAA' BY AREACODE
                   ALL 'TTT' BY THREEDIGIT
                   ALL 'NNNN' BY FOURDIGIT

此代码假设数字位于&#34; NUM&#34;,并且它可以是ZONE / PACK / BINARY / COMP-3 / COMP-5格式中的任何一种。我在这个示例代码中使用了COMP-5。