PGM PARM(&PROFILE &USEROR)
DCL VAR(&PROFILE) TYPE(*CHAR) LEN(10)
DCL VAR(&USEROR) TYPE(*CHAR) LEN(10)
DCL VAR(&M1HOST) TYPE(*CHAR) LEN(20)
DCL VAR(&EXIT) TYPE(*CHAR) LEN(3)
CHGVAR VAR(&EXIT) VALUE('NO ')
/* The PARM &PROFILE is provided as a key field for getting the correct +
default information for the FTP script file for the application. +
It can be any unique name. It will write a new record with the +
key being &PROFILE + User's name. */
/* The PARM &USEROR allows the CL to specify a common USER for +
the FTP application, and not be different for each independant +
user of the application. It is designed to allow a departmental +
PROFILE for a departmental application. */
/* The file FTP10W is a regular data file designed to hold the working +
Script file records for the RPG display screen program. +
The file FTP10W will be processed in QTEMP as the Password is saved +
in it, in the clear. +
The script file must be a Source Physical File however, so once +
the script is set, it must be copied over with FMTOPT(*CVTSRC). +
The copied-over source library/file/member is QTEMP/QFTP/FTPCMDS */
CHKOBJ OBJ(QTEMP/FTP10W) OBJTYPE(*FILE) /* if not +
there, make it there. */
MONMSG MSGID(CPF9801) EXEC(DO)
CRTDUPOBJ OBJ(FTP10W) FROMLIB(ISY2) OBJTYPE(*FILE) +
TOLIB(QTEMP)
ENDDO
CLRPFM FILE(QTEMP/FTP10W)
OVRDBF FILE(FTP10W) TOFILE(QTEMP/FTP10W)
CHGVAR VAR(&EXIT) VALUE('NO ')
CALL PGM(FTP10) PARM(&PROFILE &M1HOST &EXIT &USEROR)
IF COND(&EXIT *EQ 'YES') THEN(RETURN)
CHKOBJ OBJ(QTEMP/QFTP) OBJTYPE(*FILE) /* if not +
there, copy it there. */
MONMSG MSGID(CPF9801) EXEC(DO)
CRTDUPOBJ OBJ(QFTP) FROMLIB(ISY2) OBJTYPE(*FILE) +
TOLIB(QTEMP)
ENDDO
CPYF FROMFILE(QTEMP/FTP10W) TOFILE(QTEMP/QFTP) +
TOMBR(FTPCMDS) MBROPT(*REPLACE) +
CRTFILE(*NO) FMTOPT(*CVTSRC) /* Create +
FTP script file as a Source Physical File */
OVRDBF FILE(INPUT) TOFILE(QTEMP/QFTP) MBR(FTPCMDS)
/* OVRDBF FILE(OUTPUT) TOFILE(ISY2/QFTP) MBR(FTPLOG) +
By commenting this command the FTP process prints the +
log file to the screen. Uncommenting the command will +
print and save the log in ISY2/QFTP/FTPLOG */
IF COND(&EXIT *NE 'YES') THEN(FTP +
RMTSYS(&M1HOST) CCSID(437)) /* code page +
437 is the text default: */
ENDPGM
|
H Y
/****************************************************************/
/* SOURCE - FTP10 */
/* PROGRAMMER - BOOTH MARTIN */
/* DATE - 3/98 */
/* COMMENTS - A PROGRAM TO DISPLAY FTP DEFAULT VALUES, */
/* ALLOW KEYING IN NEW VALUES, AND */
/* WRITING BACK THE VALUES, PLUS */
/* WRITING OUT AN FTP SCRIPT FILE. */
/****************************************************************/
FFTP10FM CF E WORKSTN
FFTP10P UF E K DISK A
FFTP10W O E DISK
* A Named Constant field - (in case user name is blank.)
I 'Anonymous' C NC01
I SDS
I 254 263 USER
* *============================================================= *
* INDICATOR USAGE:
* 31 = Name in default record, position cursor at Password field.
* 32 = NO PASSWORD, RE-DO
* 33 = UNPROTECTS FIELDS; default is "protect" use F23 UNPROTECT
* 54 = CHAIN INDICATOR
* KL = Return to calling program, script not written.
* "PROF" is used to pass in a profile for this process. It is
* PROF + USER is the key to look up a default Script Record.
* PB1 is the pushbutton field on the screen.
* *=============================================================*
C *ENTRY PLIST
C PARM PROF WHAT PROGRAM?
C PARM M1HOST HOST SITE
C PARM EXIT
C PARM USEROR USER OVERRIDE
* .. ..
C Z-ADD*ZEROS PB1
C EXFMTFTP10A
C SELEC
C*
* .. KL? Exit/cancel; don't do process:
C *INKL WHEQ *ON
C PB1 OREQ 1
C MOVE 'YES' EXIT 3
C MOVE *ON *INLR
C*
* .. KX?
C *INKX WHEQ *ON
C PB1 OREQ 2
C *IN33 IFEQ *ON
C MOVE *OFF *IN33
C ELSE
C MOVE *ON *IN33
C END
C*
* .. Password blank?
C M1PASS WHEQ *BLANKS
C MOVE *ON *IN32
C*
C* .. Otherwise, process the screen:
C OTHER
C KEY1 CHAINFTP10R1 54
C MOVE M1HOST M0HOST
C MOVE M1NAME M0NAME
C*** DON'T SAVE: MOVE M1PASS M0PASS
C MOVE M1LN2 M0LN2
C MOVE M1LN3 M0LN3
C MOVE M1LN4 M0LN4
C MOVE M1LN5 M0LN5
C MOVE M1LN6 M0LN6
C MOVE M1LN7 M0LN7
C MOVE *DATE M0DATO
C TIME M0TIMO
C *IN54 IFEQ *ON
C MOVE PROF M0PROF
C MOVE USER M0USRO
C WRITEFTP10R1
C ELSE *IN54 IFEQ *ON
C UPDATFTP10R1
C END X-*IN54 IFEQ *ON
C* MAKE THE RECORDS FOR THE FTP SCRIPT FILE:
C* LINE 1:
C MOVE *BLANKS M0LINE
C M1NAME CAT M1PASS:1 M0LINE
C M0LINE IFGT *BLANKS
C WRITEFTP10R2
C END
C* LINE 2:
C MOVE *BLANKS M0LINE
C MOVELM1LN2 M0LINE
C M0LINE IFGT *BLANKS
C WRITEFTP10R2
C END
C* LINE 3:
C MOVE *BLANKS M0LINE
C MOVELM1LN3 M0LINE
C M0LINE IFGT *BLANKS
C WRITEFTP10R2
C END
C* LINE 4:
C MOVE *BLANKS M0LINE
C MOVELM1LN4 M0LINE
C M0LINE IFGT *BLANKS
C WRITEFTP10R2
C END
C* LINE 5:
C MOVE *BLANKS M0LINE
C MOVELM1LN5 M0LINE
C M0LINE IFGT *BLANKS
C WRITEFTP10R2
C END
C* LINE 6:
C MOVE *BLANKS M0LINE
C M0LINE IFGT *BLANKS
C MOVELM1LN6 M0LINE
C WRITEFTP10R2
C END
C* LINE 7:
C MOVE *BLANKS M0LINE
C MOVELM1LN7 M0LINE
C M0LINE IFGT *BLANKS
C WRITEFTP10R2
C END
* Present job finished normally:
C MOVE *ON *INLR
C*
C ENDSL
C*
* *=============================================================*
* *== SUB ROUTINES ==*
* *=============================================================*
C *INZSR BEGSR
C *LIKE DEFN M0PROF PROF
C *LIKE DEFN USER USEROR
C KEY1 KLIST
C KFLD PROF
C KFLD USER
C USEROR IFGT *BLANKS
C MOVE USEROR USER
C END
C KEY1 CHAINFTP10R1 54
C *IN54 IFEQ *OFF
* USUALLY THE PARM-IN WILL BE EMPTY, BUT IF NOT, USE IT.
C M1HOST IFEQ *BLANKS
C MOVE M0HOST M1HOST
C END
C MOVE *BLANKS M1PASS
C* If name is blank, substitute "anonymous"
C* otherwise, move in the name and set the cursor at Password field.
C M0NAME IFEQ *BLANKS
C MOVELNC01 M1NAME
C ELSE
C MOVE M0NAME M1NAME
C MOVE *ON *IN31
C END
C MOVE *BLANKS M1PASS
C MOVE M0LN2 M1LN2
C MOVE M0LN3 M1LN3
C MOVE M0LN4 M1LN4
C MOVE M0LN5 M1LN5
C MOVE M0LN6 M1LN6
C MOVE M0LN7 M1LN7
C END *IN54 IFEQ *OFF
C ENDSR
|
(the saved Script Lines, for the default FTP screen set up)
A* COMMENTS - FILE FOR DEFAULTS FOR THE FTP FUNCTION */
A* ------------------------------------------------------------ */
A* ------------------------------------------------------------ */
A* */
A***************************************************************/
A R FTP10R1
A*
A M0HOST 20 TEXT('HOST SITES NAME')
A M0NAME 20 TEXT('USERS NAME AT HOST')
A M0PASS 20 TEXT('PASSWORD AT HOST')
A M0LN2 45 TEXT('LINE 2')
A M0LN3 45 TEXT('LINE 3')
A M0LN4 45 TEXT('LINE 4')
A M0LN5 45 TEXT('LINE 5')
A M0LN6 45 TEXT('LINE 6')
A M0LN7 45 TEXT('LINE 7')
A**********************
A* AUDIT TRAIL FIELDS *
A**********************
A M0PROG 10 TEXT('PROGRAM')
A* LAST OPENED BY: *
A M0USRO 10 TEXT('USER')
A M0DATO 8S 0 TEXT('DATE')
A M0TIMO 6S 0 TEXT('TIME')
A K M0PROG
A K M0USRO
|
(The new Script File to do the actual File Transfer) (normally exists but only QTEMP has any data) (This file will be copied with *CVTSRC)
A* COMMENTS - FILE FOR SCRIPT LINES */
A* ------------------------------------------------------------ */
A* ------------------------------------------------------------ */
A* */
A***************************************************************/
A R FTP10R2
A*
A M0LINE 92 TEXT('SCRIPT')
|
A*%%TS SD 19980513 092605 BOOTH REL-V4R2M0 5769-PW1
A****************************************************************/
A* SOURCE - FTP10FM */
A* PROGRAMMER - BOOTH MARTIN */
A* DATE - 3/98 */
A* COMMENTS - DISPLAY FTP DEFAULTS, COLLECT VALUES FOR */
A* BUILDING AN FTP SCRIPT. */
A* */
A* NOTE: IF THIS SCREEN DOESN'T DISPLAY CORRECTLY THE SECOND */
A* TIME IT IS DISPLAYED, COMPILE IT WITH 14, AND AN F4 PROMPT. */
A* CHOOSE F10, ADDITIONAL PARAMETERS AND RESTORE DISPLAY *YES */
A* (This display looks best if used on an enhanced display) */
A* */
A****************************************************************/
A*%%EC
A DSPSIZ(24 80 *DS3)
A CHGINPDFT(HI UL LC)
A MSGLOC(12)
A PRINT
A CF12(12 'CANCEL')
A CF23(23 'UNPROTECT')
A R FTP10A
A*%%TS SD 19980513 092605 BOOTH REL-V4R2M0 5769-PW1
A WINDOW(6 15 12 60)
A OVERLAY
A WDWTITLE((*TEXT ' FTP Information '-
A ))
A M1HOST R B 1 16REFFLD(FTP10R1/M0HOST *LIBL/FTP10P)
A N33 DSPATR(PR)
A M1NAME R B 2 16REFFLD(FTP10R1/M0NAME *LIBL/FTP10P)
A M1PASS R B 3 16REFFLD(FTP10R1/M0PASS *LIBL/FTP10P)
A 31 DSPATR(PC)
A DSPATR(ND)
A 32 ERRMSGID(FTP0010 QGPL/ERRMSGP 32)
A 1 1'CONNECTING TO:'
A 2 1'USER NAME . :'
A 3 1'USER PASSWORD:'
A 4 1'SCRIPT FILE :'
A 5 1' '
A 1 37' '
A 2 37' '
A 3 37' '
A M1LN3 R B 5 16REFFLD(FTP10R1/M0LN3 *LIBL/FTP10P)
A N33 DSPATR(PR)
A M1LN2 R B 4 16REFFLD(FTP10R1/M0LN2 *LIBL/FTP10P)
A N33 DSPATR(PR)
A M1LN4 R B 6 16REFFLD(FTP10R1/M0LN4 *LIBL/FTP10P)
A N33 DSPATR(PR)
A M1LN5 R B 7 16REFFLD(FTP10R1/M0LN5 *LIBL/FTP10P)
A N33 DSPATR(PR)
A M1LN6 R B 8 16REFFLD(FTP10R1/M0LN6 *LIBL/FTP10P)
A N33 DSPATR(PR)
A M1LN7 R B 9 16REFFLD(FTP10R1/M0LN7 *LIBL/FTP10P)
A N33 DSPATR(PR)
A PB1 2Y 0B 11 1PSHBTNFLD
A CHCAVAIL((*COLOR BLU))
A PSHBTNCHC(1 'F12=Cancel' CF12)
A N33 PSHBTNCHC(2 'F23=Unprotect' CF23)
A 33 PSHBTNCHC(3 'F23= Protect' CF23)
A R DUMMY
A TEXT('PREVENTS PREVIOUS SCREEN FROM-
A BEING CLEARED')
A ASSUME
A 5 9' '
|