添加字符格式中存在的金额

时间:2014-10-01 14:25:06

标签: jcl dfsort

我有一个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并在那里找到总数。我不想根据一个键来总计总数。我只想在该列中汇总该文件中的所有金额。

2 个答案:

答案 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这两个是同义词,可以处理前导符号,但不能处理小数点。在原始示例中,小数点的存在导致该数字仅被视为小数部分。小数点前面的所有内容都被忽略,包括符号。