概述
Mainframe主机系统之间的文件传输方式很多。下面的方法适应于MVS, OS/390和Z/OS系统。
最常见的有以下几种情况:
1、两个系统在同一个Sysplex中。
2、两个系统共享磁盘。
3、两个系统相互独立。
下面分别就每种方式的文件传输加以介绍。
两个系统在同一个Sysplex中
这两个系统共享同一个Catalog,所有文件都是共享的,所以不存在文件传输的问题。
两个OS/390系统共享磁盘
方法一
假如两个系统是彼此独立,但是共享磁盘,而且各自有不同的磁盘卷(VOLSER)和Catalog name。
这种情况下可以使用Import Catalog的方法来拷贝文件:
1、将目的系统的Catalog卷Online
2、IMPORT目的系统的Catalog
3、利用DSS拷贝文件
4、EXPORT目的系统的Catalog
5、将目的系统的Catalog卷Offline
下面的例子将生产系统的IODF文件(VSAM)拷贝到测试系统。IODF文件存在于Master Catalog中。
该作业在生产系统上执行。
方法二
对于不需要Catalog的文件,例如Sequential, PDS等类型文件,也可以使用共享卷来拷贝。
不共享Catalog的系统可以使用一个共享卷,该卷在两个系统同时Online.
下面的拷贝的步骤:
1、在第一个系统,将文件先拷到共享卷上。
2、在第二个系统,将文件从共享卷拷走。
3、在第一个系统,将共享卷上的文件删除。
两个相互独立的OS/390系统
下面主要介绍当两个系统不共享磁盘,例如两个单位的不同主机系统的情况下的文件传输。
这里是大概的步骤:
第一,将要拷的文件用DSS打包到一个文件中,有点像WinZIP。
第二,用TSO XMIT命令将该文件转换成可以传输的格式。
第三,将该文件传到另外一个OS/390系统上。
第四,用TSO RECEIVE命令将该文件还原为DSS格式。
第五,用DSS将文件还原。
这里是作业的实例:
首先,将要拷的文件用DSS打包到一个文件中
用DSS的好处是同时可以拷多个不同格式的文件,而且使用压缩来节省磁盘。
下面的例子将文件打包到文件SP2487.FILE.DUMP中。
第二,用TSO XMIT命令将该文件转换成可以传输的格式
使用TSO的TRANSMIT命令将该DSS DUMP文件转换成XMIT格式。
1、在ISPF中,使用=6命令到TSO命令提示中。
2、使用下面命令:
xmit jes2node.userid dataset('source.dataset') outdsn('xmitout.dataset')
下面是该命令的注释:
参数 | 参数描述 |
---|---|
jes2node | 这是你当前系统的JES2 NODE Name. 通过下面的方法得到你的JES2 NODE Name: 到SDSF中,使用node命令,(例如=S;NODE),或者使用MVS命令$D NODE Status属于OWNNODE的NodeName就是你当前系统的JES2 Nodename. 例如PRODSYS1 SDSF NODE的输出示例: JES2 命令'$D NODE'的输出示例: Display Filter View Print Options Help ------------------------------------------------------------------------------- SDSF SYSLOG 4317.101 OFD1 OFD1 04/25/2005 0W 29334 COLUMNS 1 80 COMMAND INPUT ===> /$D NODE SCROLL ===> CSR $HASP826 NODE(1) 886 $HASP826 NODE(1) NAME=PRODSYS1,STATUS=(OWNNODE), $HASP826 AUTH=(DEVICE=YES,JOB=YES,NET=NO,SYSTEM=YES), $HASP826 TRANSMIT=BOTH,RECEIVE=BOTH,HOLD=NONE, $HASP826 PENCRYPT=NO,ENDNODE=NO,REST=0,SENTREST=ACCEPT, $HASP826 COMPACT=0,LINE=0,LOGMODE=,LOGON=0, $HASP826 PASSWORD=(VERIFY=(SET),SEND=(FROM_OWNNODE)), $HASP826 PATHMGR=YES,PRIVATE=NO,SUBNET=,TRACE=YES ------------------------------------------------------------------------------- SDSF NODE DISPLAY SYS9 OSHAWA1 N1 LINE 1-5 (5) COMMAND INPUT ===> SCROLL ===> CSR NP NUMBER NodeName Status Authority Trans Recv Hold N1 PRODSYS1 OWNNODE (D=Y,J=Y,N=N,S=Y) BOTH BOTH NONE N2 TESTSYS1 UNCONNECTED (D=Y,J=Y,N=N,S=Y) BOTH BOTH NONE N3 N3 UNCONNECTED (D=Y,J=Y,N=N,S=Y) BOTH BOTH NONE N4 N4 UNCONNECTED (D=Y,J=Y,N=N,S=Y) BOTH BOTH NONE N5 N5 UNCONNECTED (D=Y,J=Y,N=N,S=Y) BOTH BOTH NONE |
userid | 这是你当前使用的TSO用户名,例如SP2487。 |
source.dataset | 这是你要转换的源文件名, 例如SP2487.FILE.DUMP。 |
xmitout.dataset | 这是经XMIT转换以后的文件名称, 例如SP2487.FILE.XMIT。 |
例子:
xmit prodsys1.sp2487 dataset('sp2487.file.dump') outdsn('sp2487.file.xmit')
注意XMIT生成的文件的属性是: RECFM=FB,LRECL=80,BLKSIZE=3120 。在另一个系统上的XMIT文件一定要有与此相同的文件属性。
第三、将该文件传到另外一个OS/390系统上
两个系统在同一个网络中
当两个系统在同一个网络中时,最常用的方法是利用FTP。
下面是从源系统执行FTP命令的例子:
=6到ISPF的TSO命令行,执行下面FTP命令:
这个FTP命令会把源文件的属性传给目标文件。
两个系统在不再同一个网络中
1、用FTP将该文件从OS/390上传到你的PC上,刻一个CD或软盘。
此时注意要使用BINARY的方式下载源文件:
2、将该CD或者软盘上的文件上传到另一个OS/390上。
使用下面的FTP命令将PC上的文件传到主机上:
ftp os390s2.company.com tso tsouser password binary quote site RECFM=FB LRECL=80 BLKSIZE=3120 quote site CYLINDERS PRIMARY=100 SECONDARY=100 put c: empdssdump.xmi 'hunter.file.xmit' quit
第四,用TSO RECEIVE命令将该文件还原为DSS格式
在目的系统上,使用下面的命令将XMIT文件还原为DSS 的DUMP文件:
这样,DSS文件就恢复到了目的系统上。
第五,用DSS将文件还原
在目的系统上,你可以使用下面的作业将DUMP文件中的所有文件恢复到目的系统上。
很多时候由于两个系统的HLQ(Higher Level Qualifier, 第一级文件名) 定义不一致。这时需要将一些文件的HLQ改名,可以使用下面的作业:
在此例子中,作业将所有以SP2487开头的文件(或者HLQ为SP2487)的文件恢复,并将他们的HLQ改为HUNTER。
总结
以上总结了在不同情况下,在两个Mainframe系统之间进行文件传递的方法。
//************************************************** //RESTORE EXEC PGM=ADRDSSU //SYSPRINT DD SYSOUT=* //DUMPFILE DD DISP=SHR,DSN=HUNTER.FILE.DUMP //DASD DD DISP=OLD,UNIT=SYSDA,VOL=SER=TSTMCT //SYSIN DD * RESTORE DATASET(INCLUDE(SP2487.**)) - RENAMEU(HUNTER) - INDDNAME(DUMPFILE) - OUTDDNAME(DASD) - CATALOG /*
//************************************************** //RESTORE EXEC PGM=ADRDSSU //SYSPRINT DD SYSOUT=* //DUMPFILE DD DISP=SHR,DSN=HUNTER.FILE.DUMP //DASD DD DISP=OLD,UNIT=SYSDA,VOL=SER=TSTMCT //SYSIN DD * RESTORE DATASET(INCLUDE(**)) - INDDNAME(DUMPFILE) - OUTDDNAME(DASD) - CATALOG /*
receive indsn('hunter.file.xmit') dataset('hunter.file.dump')
ftp os390s1.company.com tso tsouser password binary get 'sp2487.file.xmit' c: empdssdump.xmi quit
ftp os390s2.company.com tso tsouser password put 'sp2487.file.xmit' 'hunter.file.xmit' quit
//DELETE EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSIN DD * DELETE SP2487.FILE.DUMP IF LASTCC<=8 THEN SET MAXCC=0 //* //BACKUP EXEC PGM=ADRDSSU,COND=(0,NE) //SYSPRINT DD SYSOUT=* //DUMPDS DD DISP=(NEW,CATLG), // UNIT=SYSDA,RECFM=U,LRECL=32760, // SPACE=(CYL,(100,100),RLSE), <--- CHANGE // VOL=SER=SYSWRK, <--- CHANGE // DSN=SP2487.FILE.DUMP <--- CHANGE //SYSIN DD * <--- CHANGE DUMP DATASET(INCLUDE( - SYS1.IPLPARM - SYS1.PARMLIB - SYS1.TCPPARMS - SYS1.USER.** - SP2487.ZHOUGH.JCL - SP2487.ZHOUGH.REXX - SP2487.ASM.** - )) - OUTDDNAME(DUMPDS) - TOLERATE(ENQF) - COMPRESS /*
//********************************************************************* //* VARY THE MASTER CATALOG VOLUME OF TEST SYSTEM ONLINE //********************************************************************* //ONLINE EXEC PGM=IKJEFT01,PARM='VARY 2102,ONLINE' //SYSEXEC DD DISP=SHR,DSN=SYS1.USER.CMDPROC //SYSTSPRT DD SYSOUT=* //SYSTSIN DD DUMMY //********************************************************************* //* IMPORT TEST SYSTEM MASTER CATALOG TO PRODUCTION SYSTEM. //********************************************************************* //IMPTMCAT EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSIN DD * IMPORT CONNECT OBJECTS((SYS1.TEST.MASTCAT - VOLUMES(TSTMCT) DEVICETYPE(3390))) /* //********************************************************************* //* COPY THE PRODUCTION IODF DATASET FROM PRODUCTION TO TEST SYSTEM. //********************************************************************* //COPYIODF EXEC PGM=ADRDSSU //SYSPRINT DD SYSOUT=* //SYSIN DD * COPY DATASET(INCLUDE(SYS1.IODF00.CLUSTER)) - INDYNAM(SYSMCT) OUTDYNAM(TSTMCT) - RECAT(SYS1.TEST.MASTCAT) TOL(ENQF) REPLACE /* //********************************************************************* //* EXPORT TEST SYSTEM MASTER CATALOG FROM PRODUCTION SYSTEM. //********************************************************************* //EXPTMCAT EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSIN DD * EXPORT SYS1.TEST.MASTCAT DISCONNECT /* //********************************************************************* //* VARY TARGET MASTER CATALOG VOLUME OFFLINE //********************************************************************* //OFFLINE EXEC PGM=IKJEFT01,PARM='VARY 2102,OFFLINE' //SYSEXEC DD DISP=SHR,DSN=SYS1.USER.CMDPROC //SYSTSPRT DD SYSOUT=* //SYSTSIN DD DUMMY