我有一个LR,LRECL = 500,RECFM = FB,在70到82位,我有以下字符格式的数量字段。
-000000042.99
-000000001.50
-000000003.00
-000000001.50
-000000042.99
+000000025.00
+000000019.52
+000000058.36
如何将其转换为Packed Decimal?我的意图是我需要总结金额字段。任何想法?
我们有DFSORT。这些金额字段不是打包的十进制或数字格式。此文件来自外部系统,我想通过JCL汇总此文件中的所有金额。我必须知道金额。出于显而易见的原因,我不希望将此文件导出到excel并在那里找到总数。我不想根据一个键来总计总数。我只想在该列中汇总该文件中的所有金额。
答案 0 :(得分:1)
//SORTA EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//SORTOUT DD SYSOUT=*
//SYSIN DD *
OPTION COPY
OUTFIL REMOVECC,
TRAILER1=(TOTAL=(1,13,SFF,
EDIT=(SIIIIIIIIT.TT),
SIGNS=(+,-),
LENGTH=13))
//SORTIN DD *
-000000010.10
-000000020.20
+000000005.88
Now I am getting the desired output
-000000010.10
-000000020.20
+000000005.88
-24.42
答案 1 :(得分:0)
使用OUTFIL及其报告功能是一项简单的任务:
//TOTALREP EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//SORTOUT DD SYSOUT=*
//SYSIN DD *
OPTION COPY
OUTFIL REMOVECC,
TRAILER1=(TOTAL=(1,13,SFF,
EDIT=(SIIIIIIIIT.TT),
SIGNS=(+,-),
LENGTH=13))
//SORTIN DD *
-000000042.99
-000000001.50
-000000003.00
-000000001.50
-000000042.99
+000000025.00
+000000019.52
+000000058.36
SORTOUT包含:
-000000042.99
-000000001.50
-000000003.00
-000000001.50
-000000042.99
+000000025.00
+000000019.52
+000000058.36
+3.86
REMOVECC表示不包含打印机控制代码,TRAILER1在OUTFIL组的末尾执行,TOTAL(或TOT)表示总计位置(此处为1)长度(13)和类型(FS) (您应该在DFSORT应用程序编程指南中查找,对于您的DFSORT版本,可以在此处找到:http://www-01.ibm.com/support/docview.wss?uid=isg3T7000080。编辑,标志和长度决定了TOTAL值的显示方式。
UFF未标记自由格式 - 这将删除所有非数字数字并处理结果
SFF是签名免费格式 - 这将删除所有非数字数字,并根据字段中任何位置的存在处理结果,这意味着一个或多个-
如果{{1如果找到,则值为负,否则为正。
FS CSF这两个是同义词,可以处理前导符号,但不能处理小数点。在原始示例中,小数点的存在导致该数字仅被视为小数部分。小数点前面的所有内容都被忽略,包括符号。