You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JCL中配置HFS文件以适配ISRSUPC进行文件比对?

问题

我编写了如下JCL作业,尝试将数据集与HFS文件的内容进行比对:

//CHKOUTP  EXEC PGM=ISRSUPC,PARM=(DELTAL,FILECMP)                   
//NEWDD    DD DSN=&TMP1,DISP=(OLD,DELETE)                          
//OLDDD    DD PATH='/u/gemuser/test/expout.txt',PATHOPTS=(ORDONLY) 
//OUTDD    DD SYSOUT=A                                              

但ISRSUPC似乎无法识别该HFS文件,得到如下输出:

ISRSUPC   -   MVS/PDF FILE/LINE/WORD/BYTE/SFOR COMPARE UTILITY- ISPF FOR z/OS
NEW: SYS24173.T013517.RA000.TSTQFMT.TMP1.H01                 OLD: ...PATH=.SPECIFIED...
                                                                               
                   COMPARE SUMMARY LISTING (FILE COMPARE)                      
                                                                               
DIFF SAME                      N-BYTES O-BYTES N-LINES O-LINES N-HASH-SUM O-HASH-SUM
                                                                               
 **                               1188     400       9       5  BC58F79D   CBCCC86B
PROCESS OPTIONS USED: NONE                                                     

请问应如何在JCL中编码HFS文件,才能让ISRSUPC正常使用它?我已查找ISRSUPC的示例,但均为数据集相关,未涉及HFS文件。

解决方案

ISRSUPC本身不支持直接读取HFS文件,必须先将HFS文件转换为MVS顺序数据集,再执行比对。具体操作如下:

  • 新增HFS转数据集步骤
    在原JCL前添加一个步骤,通过BPXBATCH调用shell命令把HFS文件复制到临时顺序数据集:

    //COPYHFS  EXEC PGM=BPXBATCH,PARM='sh cp /u/gemuser/test/expout.txt "//DD:HFSTODS"'
    //HFSTODS  DD DSN=&TMP2,DISP=(NEW,PASS),SPACE=(TRK,(1,1)),
    //         DCB=(RECFM=VB,LRECL=255,BLKSIZE=0)
    //STDOUT   DD SYSOUT=A
    //STDERR   DD SYSOUT=A
    

    注意DCB参数需匹配HFS文件的格式,文本文件一般用RECFM=VB,LRECL=255即可。

  • 修改ISRSUPC的输入定义
    把原JCL中OLDDD的HFS路径替换为转换后的临时数据集:

    //CHKOUTP  EXEC PGM=ISRSUPC,PARM=(DELTAL,FILECMP)                   
    //NEWDD    DD DSN=&TMP1,DISP=(OLD,DELETE)                          
    //OLDDD    DD DSN=&TMP2,DISP=(OLD,DELETE) 
    //OUTDD    DD SYSOUT=A                                              
    
  • 替代方案:直接使用z/OS UNIX的diff命令
    如果不需要ISRSUPC的输出格式,可直接通过BPXBATCH调用UNIX的diff工具完成比对,无需转换数据集:

    //COMPARE  EXEC PGM=BPXBATCH,PARM='sh diff <(cat //DD:NEWDS) /u/gemuser/test/expout.txt'
    //NEWDS    DD DSN=&TMP1,DISP=(OLD,DELETE)
    //STDOUT   DD SYSOUT=A
    //STDERR   DD SYSOUT=A
    

内容的提问来源于stack exchange,提问作者Morag Hughson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 04:07:06