输入文件列在字段2列、A文件的第3列-B文件的第三列上进行比较,得出总共有8个TTTTTTTT的减法计数
OPTION COPY
JOINKEYS FILES=F1,FIELDS=(5,4,A,10,20,A)
JOINKEYS FILES=F2,FIELDS=(1,4,A,6,20,A)
REFORMAT FIELDS=(F1:10,20,9,1,5,4,30,1,31,10,F2:27,10)
JOIN UNPAIRED,F1
INREC BUILD=(1,46,27,10,SFF,SUB,37,10,SFF,EDIT=(TTTTTTTT))
OUTFIL REMOVECC,NODETAIL,
SECTIONS=(1,54,
TRAILER3=(1,36,
';',
37,10,
';',
47,7))
输出给出最后一列(减去7位数字,其中必须是8个字符为什么在SECTIONS=1,54中定义了55列而不是54列,并且没有给出添加";"的终止,对于一个";"如果你看到第…列,它增加了一列,从54到55。。对于secont添加了";"它只是截取文件的最后一个字符
----+----1----+----2----+----3----+----4----+----5----+
********************************* Top of Data *********
22222222 ;5060; 1; 1;0000000
47,7))
您只要求从输入中复制7个字节,因此只复制7个,而不是8个。
我看不出有什么理由让你使用OUTFIL和SECTIONS。
您正在将部分的控制字段定义为整个记录。如果连续的记录是相同的,它们将作为一个记录出现,甚至不会相加。试着获取测试数据来向自己展示这一点。
当F2不存在时,将SFF用于F2数据是有创意的,但使事情变得不那么清楚。你的号码有签名吗?此外,当你进行SUBtract时,你不允许出现负面结果。你的任何数字都能超过八位数吗?如果是这样的话,如果SUB的结果给出的数字超过八位,则会被截断。
OPTION COPY
JOINKEYS FILES=F1,FIELDS=(5,4,A,10,20,A)
JOINKEYS FILES=F2,FIELDS=(1,4,A,6,20,A)
REFORMAT FIELDS=(F1:10,20,9,1,5,4,30,1,31,10,F2:27,10)
JOIN UNPAIRED,F1
INREC BUILD=(1,36,
C';',
37,10,
C';',
27,10,SFF,
SUB,
37,10,SFF,
EDIT=(TTTTTTTT))
你可以使用的SFF的替代格式是UFF(免费格式)和FS(固定格式),后者有一个可选的浮动符号。我认为FS最符合你的要求。
在EDIT模式中,T表示"有效数字",因此将保留前导零。I表示"不重要的数字",因此前导零将显示为空格。
EDIT=(IIIIIIIT)
手册中有一些标准模式,以及许多可以使用EDIT模式进行操作的示例。