如何根据变量将字符添加到字符串的开头?例如,我们用于电话号码的供应商将字符串转换为数字,该数字将电话号码的前导0除掉。当他们向我们发送报告时,我们将数字转换回字符串,但现在它没有正确的数字。我正在尝试以下方法:
IF LENGTH(TO-NUM) < 10
SUBTRACT LENGTH(TO-NUM) FROM 10 GIVING ADD-NUM-ZERO
现在我需要弄清楚如何将ADD-NUM-ZERO数字0添加到字符串TO-NUM的开头,而不会覆盖开头的字符。
答案 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。