COBOL-根据变量将字符数添加到字符串
COBOL- Add number of characters to a string based on variable
如何根据变量将字符添加到字符串的开头?例如,我们用于 telephone 号码的供应商将字符串转换为数字,将前导 0 从 phone 号码中删除。当他们将报告发回给我们时,我们将数字转换回字符串,但现在它没有正确数量的数字。我正在尝试以下操作:
IF LENGTH(TO-NUM) < 10
SUBTRACT LENGTH(TO-NUM) FROM 10 GIVING ADD-NUM-ZERO
现在我需要弄清楚如何将 ADD-NUM-ZERO 个 0 添加到字符串 TO-NUM 的开头而不覆盖开头的字符。
假设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
.
来提取数字
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
此代码假定数字为 "NUM",并且可以是任何 ZONE/PACK/BINARY/COMP-3/COMP-5 格式。我在此示例代码中使用了 COMP-5。
如何根据变量将字符添加到字符串的开头?例如,我们用于 telephone 号码的供应商将字符串转换为数字,将前导 0 从 phone 号码中删除。当他们将报告发回给我们时,我们将数字转换回字符串,但现在它没有正确数量的数字。我正在尝试以下操作:
IF LENGTH(TO-NUM) < 10
SUBTRACT LENGTH(TO-NUM) FROM 10 GIVING ADD-NUM-ZERO
现在我需要弄清楚如何将 ADD-NUM-ZERO 个 0 添加到字符串 TO-NUM 的开头而不覆盖开头的字符。
假设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
.
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
此代码假定数字为 "NUM",并且可以是任何 ZONE/PACK/BINARY/COMP-3/COMP-5 格式。我在此示例代码中使用了 COMP-5。