我编写了一个非常简单的 COBOL 程序,该程序应该从 sysin dd * 获取数据并将其放入我的 WORKING-STORAGE 变量中,但它没有按预期工作。
问题是当我尝试将值 10 传递给 pic 9(10) 变量时, 在 jcl 中这样编码:
//SYSIN DD *
10
/*
我得到 1000000000 而不是 0000000010。有没有一种简单的方法可以使其在不更改输入数据的情况下工作?
提前致谢:)
简单的方法是执行
MOVE FUNCTION NUMVAL (ALPHANUMERIC-SYSIN) TO NUMERIC-VAR
,可能随后检查结果是否不为零(无效数据和空数据以及实际的零都会出现这种情况。FUNCTION TEST-NUMVAL (ALPHANUMERIC-SYSIN)
进行单独的验证 - 或者完全自己完成。
假设数字始终是左调整且后跟空格,则可以先右调整,然后再将其移动到数字字段。
类似的东西
perform until jclinput(10:1) is not space
perform varying ind1 from 9 to 1 by -1
ind 2 = ind1 + 1
move jclinput(ind1:1) to jclinput(inp2:2)
move zero to jclinput(1:1)
end-perform
end-perform
也许不是您在问“有没有简单的方法”时想到的。