Mainframe之间的文件传输

概述

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                                                    

你可能感兴趣的:(OS/390)