我试图将一个IBM文件传递给十六进制值。
有了这一投入:
H800 将此输出保存在文件中:
48383030我试过这样做:
//R45ORF80V JOB (EFAS,2SGJ000),'LLAMI',NOTIFY=R45ORF80,
// MSGLEVEL=(1,1),MSGCLASS=X,CLASS=A,
// REGION=0M,TIME=5
//*---------------------------------------------------
//SORTEST EXEC PGM=ICEMAN
//SORTIN DD DSN=LF58.DFE.V1408001,DISP=SHR
//SORTOUT DD DSN=LF58.DFE.V1408001.OUT,
// DISP=(NEW,CATLG,DELETE),
// LRECL=4,DATACLAS=CDMULTI
//SYSOUT DD SYSOUT=X
//SYSPRINT DD SYSOUT=X
//SYSUDUMP DD SYSOUT=X
//SYSIN DD *
SORT FIELDS=COPY
OUTREC FIELDS=(1,4,HEX)
END
/* 但它的产出如下:
C8F1F0F0我做错了什么?是否也可以将包含500个LREC和COMP-3字段的文件转换为十六进制文件?顺便说一下,我可以在使用文件管理器浏览文件时使用"HEX“命令。
发布于 2014-11-18 13:37:34
你的控制卡给了你你想要的输出。它们在EBCDIC中显示这些字符的十六进制值,而不是在ASCII中显示您所期望的十六进制值。
如果您确实希望看到ASCII的等价物,请使用TRAN=ETOA,然后使用TRAN=HEX。
您正在使用OUTREC FIELDS。FIELDS有一个新的同义词(确切地说来自10年),它是构建的。为了向后兼容,支持字段。
INREC和OUTREC是相似的,INREC在SORT或MERGE之前运行,OUTREC之后运行。
我建议您在进行排序/合并之后使用INREC。
所以:
INREC BUILD=(1,4,TRAN=ETOA)但是,没有必要使用构建。生成总是创建记录的新版本。很多时候,当你重新排列字段时,这就是你想要的。在这里,你没有。
INREC OVERLAY=(1,4,TRAN=ETOA)如果将OUTREC替换为OUTREC,则输出文件将被编码为ASCII。
如果您也想看到ASCII,那么:
INREC OVERLAY=(1,4,TRAN=ETOA,1,4,TRAN=HEX)如果您想要查看ASCII,请改为:
INREC OVERLAY=(1,4,TRAN=ETOA,1:1,4,TRAN=HEX)注意最后一个示例中的1:。这表明“结果将位于第1位置”,因此覆盖您以前转换的数据。OVERLAY可以做到这一点,BUILD不能在一条语句中完成。
https://stackoverflow.com/questions/26993739
复制相似问题