FTP Data Sheet



Bottom of Page
Site hosted by Angelfire.com: Build your free website today!
Using FTP in Batch Mode
FTP (File Transfer Protocol) can be used to transfer data from an MVS host to another MVS host. Although
it is commonly used interactively, FTP can be used to tranfer files in batch mode which allows unattended
file transfer. Here is an example of some JCL to do this. 

//S2 EXEC PGM=FTP,REGION=2000K,DYNAMNBR=20, // PARM='142.10.5.8 (EXIT' //SYSPRINT DD SYSOUT=* //OUTPUT DD SYSOUT=* //NETRC DD DISP=SHR,DSN=&SYSUID..NETRC //INPUT DD * CD ispf DIR LCD prof GET prof(isrprof) temp (REPLACE DIR QUIT // The EXIT* option causes FTP to terminate on an error. It also causes the return code to be set if an error occurs. In the example above, 142.10.5.8 is the IP address of the remote host. There must be an FTP server running on that host. An existing dataset named userid.NETRC, where userid submitted this job, will be used to retrieve userid and password information. Entries in this dataset look like: 000001 MACHINE 142.10.5.8 LOGIN user PASSWORD pswd where user is the userid for host 142.10.5.8 and pswd is the password. This eliminates the need to put the userid and password in the JCL. The GET command moves data from the file prof on the foreign host (142.10.5.8) to the file temp on the local host (the host where the batch job is running). A PUT command would move data the other way. Note that the example above is based on Version 3.1 of the IBM TCP/IP product. Refer to the documentation for your TCP/IP product for more information. Setting Exit parameters in the real world. //STEP0999 EXEC FTPBATCH,PARMS='ENTFTP (EXIT=8' //* //NETRC DD DISP=SHR,DSN=XXXXX.XXXXX.XXXXXX.DATA //INPUT DD DISP=SHR,DSN=XXXXX.XX.XXXX.CTLCARD(VMSWXFX3) //* DIR XXXXXX.* //* DIR *.dat //* DELETE XXfuel.bku //* PUT 'XXXXX.XXXXXXX.XXXX' XXXXXX.dat //* QUIT //* Exit will return a RC of 8 if this step fails else FTP return code / 0 will be returned. FTP EXIT return codes have the following format: yyxxx Where: yy Represents the subcommand code, which is a number in the range 199. Each subcommand has an EXIT_IF_ERROR flag that determines whether FTP is exited when an error occurs if you specified EXIT on the FTP command. See Table 15 on page 91 for a description of the possible FTP subcommand codes. xxx Represents the reply code that is sent from the server. The reply code is a 3-digit number. For a complete list of FTPD reply codes see the OS/390 IBM Communications Server: IP and SNA Codes. For example, the FTP EXIT return code 16550 indicates the following: 16 The GET command failed. 550 The reply code from the FTP server. The requested action was not taken; the file was not found or could not be accessed. The assigned reply codes relating to FTP are: 000 Announcing FTP. 010 Message from system operator. 020 Exected delay. 030 Server availability information. 050 FTP commentary or user information. 100 System status reply. 110 System busy doing... 150 File status reply. 151 Directory listing reply. 200 Last command received correctly. 201 An ABORT has terminated activity, as requested. 202 Abort request ignored, no activity in progress. 230 User is "logged in". May proceed. 231 User is "logged out". Service terminated. 232 Logout command noted, will complete when transfer done. 233 User is "logged out". Parameters reinitialized. 250 FTP file transfer started correctly. 251 FTP Restart-marker reply. Text is: MARK yyyy = mmmm where 'yyyy' is user's data stream marker (yours) and mmmm is server's equivalent marker (mine) (Note the spaces between the markers and '='). 252 FTP transfer completed correctly. 253 Rename completed. 254 Delete completed. 257 Closing the data connection, transfer completed. 300 Connection greeting message, awaiting input. 301 Current command incomplete (no for long time). 330 Enter password. 331 Enter account (if account required as part of login sequence). 332 Login first, please. 400 This service not implemented. 401 This service not accepting users now, goodbye. 402 Command not implemented for requested value or action. 430 Log-on time or tries exceeded, goodbye. 431 Log-on unsuccessful. User and/or password invalid. 432 User not valid for this service. 433 Cannot transfer files without valid account. Enter account and resend command. 434 Log-out forced by operator action. Phone site. 435 Log-out forced by system problem. 436 Service shutting down, goodbye. 450 FTP: File not found. 451 FTP: File access denied to you. 452 FTP: File transfer incomplete, data connection closed. 453 FTP: File transfer incomplete, insufficient storage space. 454 FTP: Cannot connect to your data socket. 455 FTP: File system error not covered by other reply codes. 456 FTP: Name duplication; rename failed. 457 FTP: Transfer parameters in error. 500 Last command line completely unrecognized. 501 Syntax of last command is incorrect. 502 Last command incomplete, parameters missing. 503 Last command invalid (ignored), illegal parameter combination. 504 Last command invalid, action not possible at this time. 505 Last command conflicts illegally with previous command(s). 506 Last command not implemented by the server. 507 Catchall error reply. 550 Bad pathname specification (e.g., syntax error).

FTP codes and actions


The series code (the number) at the beginning of some lines of the FTP log describes the action that took place between your computer and the server in the FTP process. The table below describes these FTP codes and actions. Note: not all FTP servers will use the same codes. Code Description 100 Series Codes The requested action is being initiated, expect another reply before proceeding with a new command. 110 Restart marker reply. 120 Service ready in nnn minutes. 125 Data connection already open, transfer starting. 150 File status okay, about to open data connection. 200 Series Codes The requested action has been successfully completed. 200 Command okay. 202 Command not implemented, superfluous at this site. 211 System status, or system help reply. 212 Directory status. 213 File status. 214 Help message. 215 NAME system type. (Where NAME is an official system name from the list in the Assigned Numbers document.) 220 Service ready for new user. 221 Service closing control connection. Logged out if appropriate. 225 Data connection open; no transfer in progress. 226 Closing data connection. Requested file action successful (for example, file transfer or file abort). 227 Entering Passive Mode 230 User logged in, proceed. 250 Requested file action okay, completed. 257 "PATHNAME" created. 300 Series Codes The command has been accepted, but the requested action is being held in abeyance, pending receipt of further information. 331 User name okay, need password. 332 Need account for login. 350 Requested file action pending further information. 400 Series Codes The command was not accepted and the requested action did not take place, but the error condition is temporary and the action may be requested again. 401 This service is not accepting users now. User quota filled. Try again later. 421 Service not available, closing control connection. This may be a reply to any command if the service knows it must shut down. 425 Can't open data connection. 426 Connection closed; transfer aborted. 431 Log-in unsuccessful. User name and/or password invalid. 450 Requested file action not taken. File unavailable (e.g., file busy). 451 Requested action aborted: local error in processing. 452 Requested action not taken. Insufficient storage space in system. 453 File transfer incomplete. Insufficient storage space. 500 Series Codes The command was not accepted and the requested action did not take place. 500 Syntax error, command unrecognized. This may include errors such as command line too long. 501 Syntax error in parameters or arguments. 502 Command not implemented. 503 Bad sequence of commands. 504 Command not implemented for that parameter. 530 Not logged in. 532 Need account for storing files. 550 Requested action not taken. File unavailable (e.g., file not found, no access). 552 Requested file action aborted. Exceeded storage allocation (for current directory or dataset). 553 Requested action not taken. File name not allowed. IBM Reference: http://publibz.boulder.ibm.com/epubs/pdf/f1aa2032.pdf.

Program Linkage Example:

	LINKAGE	SECTION.
 01  LK-AREA.
     05 LK-LNGTH                 PIC S9(4) COMP.
     05 LK-TIME                  PIC 9(08).
*==============================================================*
 PROCEDURE DIVISION USING LK-AREA.
*==============================================================*

*--------------------------------------------------------------*
*   M A I N L I N E                                            *
*--------------------------------------------------------------*
*--------------------------------------------------------------*
 0000-MAINLINE-RTN.

     MOVE 'MAIN-LINE-PROCESS'       TO WS-PROGRAM-LOCATION

     PERFORM 0100-INIT-RTN
        THRU 0100-EXIT.

Run JCL for above Program:

000001	//DEHUENGA JOB (9574ICD,T038,,999),'FRODO',
000002	//      MSGCLASS=Q,MSGLEVEL=(1,1),TIME=5,
000003	//      NOTIFY=DEHUENG,REGION=0M
000004	/*ROUTE XEQ ADS
000005	//PROCLIB JCLLIB ORDER=(TSDS.DEHUENG.JCL)
000006	//*
000007	//STEP010   EXEC PGM=FTP,PARM='(EXIT=4'
000008	//SYSPRINT    DD   SYSOUT=*
000009	//SYSOUT      DD   SYSOUT=*
000010	//*NETRC      DD   DISP=SHR,DSN=DK049.ARCFTP1.NETRC.DATA
000011	//SYSIN       DD   *
000012	ENTFTP
000013	ASCII
000014	PUT 'XXXX.XXXXXX.XXXXXX'     SCORE_FILE
000015	PUT 'XXXX.XXXXXX.XXXXXX'               MARKER_SCORE.TXT
000016	QUIT
000017	/*
000018	//*
000019	//IFSTEP10 IF RC>0  THEN
000020	//*
000021	//RUN   EXEC SLEEPY,PARAM=00000030,
000022	//           SYSIN1=XXXX.XXXXXXXX.JCL(FTP1EQUF),
000023	//           NETCDSN=DUMMY
000024	//*
000025	//ENDSTP10 ENDIF

Misc Note: PXSLEEP Dynamic Call:

.....
.....
.....
000076	           05 WSC-PXSLEEP              PIC  X(08) VALUE 'PXSLEEP'.
000077	           05 WSC-DSNTIAR              PIC  X(08) VALUE 'DSNTIAR'.
000078	           05 WS-PROGRAM-LOCATION      PIC  X(20) VALUE SPACES.
000079	
000080	       01  WS-END                      PIC X(27)
000081	           VALUE 'WORKING STORAGE STOPS HERE'.
.....
.....
.....
000158	       2500-CALL-PXSLEEP.
000159	
000160	           MOVE '2500-CALL-PXSLEEP'  TO WS-PROGRAM-LOCATION.
000161	
000162	           CALL WSC-PXSLEEP USING WSC-SLEEP-INTERVAL
000163	                ON EXCEPTION
000164	                   SET SLEEP-ERROR TO TRUE
000165	                   DISPLAY 'WSC-SLEEP-INTERVAL = ' WSC-SLEEP-INTERVAL
000166	           END-CALL.
000167	
000168	       2500-EXIT. EXIT.
000169
......
......
......	

Misc Note: PXSLEEP Static Call:


.....
.....
.....
000158	       2500-CALL-PXSLEEP.
000159	
000160	           MOVE '2500-CALL-PXSLEEP'  TO WS-PROGRAM-LOCATION.
000161	
000162	           CALL 'PXSLEEP' USING WSC-SLEEP-INTERVAL
000163	                ON EXCEPTION
000164	                   SET SLEEP-ERROR TO TRUE
000165	                   DISPLAY 'WSC-SLEEP-INTERVAL = ' WSC-SLEEP-INTERVAL
000166	           END-CALL.
000167	
000168	       2500-EXIT. EXIT.
000169	
......
......
......



CNTL Card


Server FTPADS test server


USERID


PassWord


EDIT TSDS.DEHUENG.JCL(DEHUENGC) - 01.01 Columns 00001 00072 ****** ***************************** Top of Data ****************************** 000001 FTPPRDB 000002 DEHUENG 000003 JUNE2004 000004 PUT 'TSDS.DEHUENG.JCL(CPXFTP)' 'TSDS.DEHUENG.JCL(CPXFTP)' 000005 QUIT

Run JCL


//DEHUENGA JOB (9574ICD,T038,,999),'FRODO', // MSGCLASS=Q,MSGLEVEL=(1,1),TIME=5, // NOTIFY=DEHUENG,REGION=0M /*ROUTE XEQ ADS //PROCLIB JCLLIB ORDER=(TSDS.DEHUENG.JCL) //* //RUN EXEC PXFTP,NUMTIME=3, // PARAM=000000000, // PARAM1=000000001, // SYSIN='DSN=TSDS.DEHUENG.JCL(DEHUENGC)', // NETC1='DUMMY', // NETRC='DUMMY', // SYSIN1='DUMMY', // SYSIN2='DUMMY', // SYSIN3='DUMMY', // SYSIN4='DUMMY', // SYSIN5='DUMMY' //*

Proc PXFTP


//PXFTP PROC NUMTIME=0,PARAM=000000000, // PARAM1=000000000, // SYSIN='', // NETC1='DUMMY', // NETRC='DUMMY', // SYSIN1=DUMMY, // SYSIN2=DUMMY, // SYSIN3=DUMMY, // SYSIN4=DUMMY, // SYSIN5=DUMMY //PRESTEP EXEC PGM=IEFBR14 //********************************************************************* //* //IFFTPA IF (&NUMTIME=0) THEN //********************************************************************* //* INITIAL FTP STEP 0 RETRYS //********************************************************************* //RUN EXEC PXFTPSTP,ENUM='37',PARAM2=&PARAM1, // CSYSIN=&SYSIN,CNETC1=&NETC1,CNETRC=&NETRC //ELSEFTPA ELSE //RUN EXEC PXFTPSTP,ENUM='4',PARAM2=&PARAM1, // CSYSIN=&SYSIN,CNETC1=&NETC1,CNETRC=&NETRC,CSYSIN1=&SYSIN1, // CSYSIN2=&SYSIN2,CSYSIN3=&SYSIN3,CSYSIN4=&SYSIN4, // CSYSIN5=&SYSIN5 //ENDFTPA ENDIF //************** //* RETRY # 1 * //************** //IFFTPB IF (RC>0 AND &NUMTIME>1) THEN //RUN EXEC PXFTPSTP,ENUM='4',PARAM2=&PARAM, // CSYSIN=&SYSIN,CNETC1=&NETC1,CNETRC=&NETRC,CSYSIN1=&SYSIN1, // CSYSIN2=&SYSIN2,CSYSIN3=&SYSIN3,CSYSIN4=&SYSIN4, // CSYSIN5=&SYSIN5 //ENDFTPB ENDIF //* //IFFTPC IF (RC>0 AND &NUMTIME=1) THEN //RUN EXEC PXFTPSTP,ENUM='37',PARAM2=&PARAM, // CSYSIN=&SYSIN,CNETC1=&NETC1,CNETRC=&NETRC,CSYSIN1=&SYSIN1, // CSYSIN2=&SYSIN2,CSYSIN3=&SYSIN3,CSYSIN4=&SYSIN4, // CSYSIN5=&SYSIN5 //ENDFTPC ENDIF //************** //* RETRY # 1 * //************** //IFFTPB IF (RC>0 AND &NUMTIME>1) THEN //RUN EXEC PXFTPSTP,ENUM='4',PARAM2=&PARAM, // CSYSIN=&SYSIN,CNETC1=&NETC1,CNETRC=&NETRC,CSYSIN1=&SYSIN1, // CSYSIN2=&SYSIN2,CSYSIN3=&SYSIN3,CSYSIN4=&SYSIN4, // CSYSIN5=&SYSIN5 //ENDFTPB ENDIF //* //IFFTPC IF (RC>0 AND &NUMTIME=1) THEN //RUN EXEC PXFTPSTP,ENUM='37',PARAM2=&PARAM, // CSYSIN=&SYSIN,CNETC1=&NETC1,CNETRC=&NETRC,CSYSIN1=&SYSIN1, // CSYSIN2=&SYSIN2,CSYSIN3=&SYSIN3,CSYSIN4=&SYSIN4, // CSYSIN5=&SYSIN5 //ENDFTPC ENDIF //************** //* RETRY # 2 * //************** //IFFTPD IF (RC>0 AND &NUMTIME>2) THEN //RUN EXEC PXFTPSTP,ENUM='4',PARAM2=&PARAM, // CSYSIN=&SYSIN,CNETC1=&NETC1,CNETRC=&NETRC,CSYSIN1=&SYSIN1, // CSYSIN2=&SYSIN2,CSYSIN3=&SYSIN3,CSYSIN4=&SYSIN4, // CSYSIN5=&SYSIN5 //ENDFTPD ENDIF //* //IFFTPE IF (RC>0 AND &NUMTIME=2) THEN //RUN EXEC PXFTPSTP,ENUM='37',PARAM2=&PARAM, // CSYSIN=&SYSIN,CNETC1=&NETC1,CNETRC=&NETRC,CSYSIN1=&SYSIN1, // CSYSIN2=&SYSIN2,CSYSIN3=&SYSIN3,CSYSIN4=&SYSIN4, // CSYSIN5=&SYSIN5 //ENDFTPE ENDIF //************** //* RETRY # 3 * //************** //IFFTPF IF (RC>0 AND &NUMTIME>3) THEN //RUN EXEC PXFTPSTP,ENUM='4',PARAM2=&PARAM, // CSYSIN=&SYSIN,CNETC1=&NETC1,CNETRC=&NETRC,CSYSIN1=&SYSIN1, // CSYSIN2=&SYSIN2,CSYSIN3=&SYSIN3,CSYSIN4=&SYSIN4, // CSYSIN5=&SYSIN5 //ENDFTPF ENDIF //* //IFFTPG1 IF (RC>0 AND &NUMTIME=3) THEN //RUN EXEC PXFTPSTP,ENUM='37',PARAM2=&PARAM, // CSYSIN=&SYSIN,CNETC1=&NETC1,CNETRC=&NETRC,CSYSIN1=&SYSIN1, // CSYSIN2=&SYSIN2,CSYSIN3=&SYSIN3,CSYSIN4=&SYSIN4, // CSYSIN5=&SYSIN5 //ENDFTPG1 ENDIF //************** //* RETRY # 4 * //************** //IFFTPG IF (RC>0 AND &NUMTIME>4) THEN //RUN EXEC PXFTPSTP,ENUM='4',PARAM2=&PARAM, // CSYSIN=&SYSIN,CNETC1=&NETC1,CNETRC=&NETRC,CSYSIN1=&SYSIN1, // CSYSIN2=&SYSIN2,CSYSIN3=&SYSIN3,CSYSIN4=&SYSIN4, // CSYSIN5=&SYSIN5 //ENDFTPG ENDIF //* //IFFTPH IF (RC>0 AND &NUMTIME=4) THEN //RUN EXEC PXFTPSTP,ENUM='37',PARAM2=&PARAM, // CSYSIN=&SYSIN,CNETC1=&NETC1,CNETRC=&NETRC,CSYSIN1=&SYSIN1, // CSYSIN2=&SYSIN2,CSYSIN3=&SYSIN3,CSYSIN4=&SYSIN4, // CSYSIN5=&SYSIN5 //ENDFTPH ENDIF //************** //* RETRY # 5 * //************** //IFFTPI IF (RC>0 AND &NUMTIME>5) THEN //RUN EXEC PXFTPSTP,ENUM='4',PARAM2=&PARAM, // CSYSIN=&SYSIN,CNETC1=&NETC1,CNETRC=&NETRC,CSYSIN1=&SYSIN1, // CSYSIN2=&SYSIN2,CSYSIN3=&SYSIN3,CSYSIN4=&SYSIN4, // CSYSIN5=&SYSIN5 //ENDFTPI ENDIF //IFFTPJ IF (RC>0 AND &NUMTIME=5) THEN //RUN EXEC PXFTPSTP,ENUM='37',PARAM2=&PARAM, // CSYSIN=&SYSIN,CNETC1=&NETC1,CNETRC=&NETRC,CSYSIN1=&SYSIN1, // CSYSIN2=&SYSIN2,CSYSIN3=&SYSIN3,CSYSIN4=&SYSIN4, // CSYSIN5=&SYSIN5 //ENDFTPJ ENDIF //************** //* RETRY # 6 * //************** //IFFTPK IF (RC>0 AND &NUMTIME>6) THEN //RUN EXEC PXFTPSTP,ENUM='4',PARAM2=&PARAM, // CSYSIN=&SYSIN,CNETC1=&NETC1,CNETRC=&NETRC,CSYSIN1=&SYSIN1, // CSYSIN2=&SYSIN2,CSYSIN3=&SYSIN3,CSYSIN4=&SYSIN4, // CSYSIN5=&SYSIN5 //ENDFTPK ENDIF //* //IFFTPL IF (RC>0 AND &NUMTIME=6) THEN //RUN EXEC PXFTPSTP,ENUM='37',PARAM2=&PARAM, // CSYSIN=&SYSIN,CNETC1=&NETC1,CNETRC=&NETRC,CSYSIN1=&SYSIN1, // CSYSIN2=&SYSIN2,CSYSIN3=&SYSIN3,CSYSIN4=&SYSIN4, // CSYSIN5=&SYSIN5 //ENDFTPL ENDIF //************** //* RETRY # 7 * //************** //IFFTPM IF (RC>0 AND &NUMTIME>7) THEN //RUN EXEC PXFTPSTP,ENUM='4',PARAM2=&PARAM, // CSYSIN=&SYSIN,CNETC1=&NETC1,CNETRC=&NETRC,CSYSIN1=&SYSIN1, // CSYSIN2=&SYSIN2,CSYSIN3=&SYSIN3,CSYSIN4=&SYSIN4, // CSYSIN5=&SYSIN5 //ENDFTPM ENDIF //IFFTPN IF (RC>0 AND &NUMTIME=7) THEN //RUN EXEC PXFTPSTP,ENUM='37',PARAM2=&PARAM, // CSYSIN=&SYSIN,CNETC1=&NETC1,CNETRC=&NETRC,CSYSIN1=&SYSIN1, // CSYSIN2=&SYSIN2,CSYSIN3=&SYSIN3,CSYSIN4=&SYSIN4, // CSYSIN5=&SYSIN5 //ENDFTPN ENDIF //************** //* RETRY # 8 * //************** //IFFTPO IF (RC>0 AND &NUMTIME>8) THEN //RUN EXEC PXFTPSTP,ENUM='4',PARAM2=&PARAM, // CSYSIN=&SYSIN,CNETC1=&NETC1,CNETRC=&NETRC,CSYSIN1=&SYSIN1, // CSYSIN2=&SYSIN2,CSYSIN3=&SYSIN3,CSYSIN4=&SYSIN4, // CSYSIN5=&SYSIN5 //ENDFTPO ENDIF //IFFTPP IF (RC>0 AND &NUMTIME=8) THEN //RUN EXEC PXFTPSTP,ENUM='37',PARAM2=&PARAM, // CSYSIN=&SYSIN,CNETC1=&NETC1,CNETRC=&NETRC,CSYSIN1=&SYSIN1, // CSYSIN2=&SYSIN2,CSYSIN3=&SYSIN3,CSYSIN4=&SYSIN4, // CSYSIN5=&SYSIN5 //ENDFTPP ENDIF //************** //* RETRY # 9 * //************** //IFFTPR IF (RC>0 AND &NUMTIME>9) THEN //RUN EXEC PXFTPSTP,ENUM='4',PARAM2=&PARAM, // CSYSIN=&SYSIN,CNETC1=&NETC1,CNETRC=&NETRC,CSYSIN1=&SYSIN1, // CSYSIN2=&SYSIN2,CSYSIN3=&SYSIN3,CSYSIN4=&SYSIN4, // CSYSIN5=&SYSIN5 //ENDSTP27 ENDIF //* //IFFTPR IF (RC> 0 AND &NUMTIME=9) THEN //RUN EXEC PXFTPSTP,ENUM='37',PARAM2=&PARAM, // CSYSIN=&SYSIN,CNETC1=&NETC1,CNETRC=&NETRC,CSYSIN1=&SYSIN1, // CSYSIN2=&SYSIN2,CSYSIN3=&SYSIN3,CSYSIN4=&SYSIN4, // CSYSIN5=&SYSIN5 //ENDSTP28 ENDIF //************** //* RETRY # 10 * //************** //IFFTPQ IF (RC>0 AND &NUMTIME>9) THEN //RUN EXEC PXFTPSTP,ENUM='37',PARAM2=&PARAM, // CSYSIN=&SYSIN,CNETC1=&NETC1,CNETRC=&NETRC,CSYSIN1=&SYSIN1, // CSYSIN2=&SYSIN2,CSYSIN3=&SYSIN3,CSYSIN4=&SYSIN4, // CSYSIN5=&SYSIN5 //ENDFTPQ ENDIF //********************************************************************* //* END OF PROC PXFTP * //*********************************************************************

Proc PXFTPSTP


//PXFTPSTP PROC ENUM=4,PARAM2=0, // CSYSIN='', // CNETC1=DUMMY, // CNETRC=DUMMY, // CSYSIN1=DUMMY, // CSYSIN2=DUMMY, // CSYSIN3=DUMMY, // CSYSIN4=DUMMY, // CSYSIN5=DUMMY //********************************************************************* //* SLEEP STEP //********************************************************************* //STEPSLP EXEC PGM=PXSUA310,PARM=&PARAM2 //STEPLIB DD DISP=SHR,DSN=DKLMS.CMNSTAGE.YCPS.#011449.LOD // DD DSN=DKLMS.CP.PROD.LOAD,DISP=SHR //SYSOUT DD SYSOUT=* //********************************************************************* //* FTP STEP //********************************************************************* //STEPFTP EXEC PGM=FTP,PARM='(EXIT=&ENUM' //*---------------------------- I N P U T ----------------------------- //NETC DD &CNETC1,DISP=SHR //NETRC DD &CNETRC,DISP=SHR //SYSIN DD &CSYSIN,DISP=SHR // DD &CSYSIN1,DISP=SHR // DD &CSYSIN2,DISP=SHR // DD &CSYSIN2,DISP=SHR // DD &CSYSIN3,DISP=SHR // DD &CSYSIN4,DISP=SHR // DD &CSYSIN5,DISP=SHR //*---------------------------- O U T P U T --------------------------- //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* *

Return

*FTP steps without an EXIT command will ignore all FTP Errors, they will be displayed
but will not stop FTP processing.

MODE B 
Sets the block mode. In block mode, data is transmitted as a series of data
blocks, preceded by one or more header bytes. Block mode preserves the
logical record boundaries of the data set or file. When Mode is set to B, the
data transfer type must be EBCDIC.
Specifying MOde B is equivalent to specifying the BLock subcommand.


Does a Windoze box support block mode? 
I doubt it, since EBCDIC is required for block mode and Windoze is an ASCII system, not EBCDIC.
TYPE A and MODE B are mutually exclusive options

EZA1736I PUT 'DK037.W037DCLM.PXCAP310.DCLMCIAC.TXT'        MONTHLY\DCLMCIAC.TXT
EZA1701I >>> SITE FIXrecfm 259 LRECL=259 RECFM=FB BLKSIZE=27972
500 'SITE FIXrecfm 259 LRECL=259 RECFM=FB BLKSIZE=27972': command not understood

You can also add a "SENDSITE" command immediately following your login to prevent the "500 'SITE FIXrecfm ... 
command not understood" message.


Top of Page

URL :ftprc.html

Revised:12/08/2004

Layout, design & revisions David E. Huenger