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 FTP2P1 is a regular data file designed to hold the working +
Script file records for the RPG display screen program. +
The file FTP20P2 will be processed in QTEMP as the Password is saved +
in it, in the clear. */
CPYF FROMFILE(FTP20P2) TOFILE(QTEMP/FTP20P2) +
FROMMBR(*ALL) TOMBR(*FROMMBR) +
MBROPT(*NONE) CRTFILE(*YES)
MONMSG MSGID(CPF2817)
CLRPFM FILE(QTEMP/FTP20P2) MBR(FTPCMDS)
OVRDBF FILE(FTP20P2) TOFILE(QTEMP/FTP20P2) +
MBR(FTPCMDS)
OVRDBF FILE(INPUT) TOFILE(QTEMP/FTP20P2) MBR(FTPCMDS)
/* OVRDBF FILE(OUTPUT) TOFILE(QTEMP/FTP20P2) 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 ____/FTP20P2/FTPLOG */
CHGVAR VAR(&EXIT) VALUE('NO ')
CALL PGM(FTP20R) PARM(&PROFILE &M1HOST &EXIT &USEROR)
IF COND(&EXIT *EQ 'YES') THEN(RETURN)
IF COND(&EXIT *EQ 'LOG') THEN(OVRDBF +
FILE(OUTPUT) TOFILE(QTEMP/FTP20P2) +
MBR(FTPLOG))
IF COND(&EXIT *NE 'YES') THEN(FTP +
RMTSYS(&M1HOST))
ENDPGM
|
H Y
/****************************************************************/
/* SOURCE - FTP20R */
/* PROGRAMMER - BOOTH MARTIN */
/* DATE - 8/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. */
/****************************************************************/
FFTP20F CF E WORKSTN
FFTP20P1 UF E K DISK A
FFTP20P2 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 EXFMTFTP20A
C MOVE *OFF *IN32
C SELEC
C*
C PB1 WHEQ 2
C MOVE *ON *IN34
C MOVE 'LOG' EXIT
C*
C PB1 WHEQ 3
C MOVE *OFF *IN34
C MOVE 'NO ' EXIT
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 4
C PB1 OREQ 5
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 CHAINFTP2P1R 54
C MOVE M1HOST M0HOST
C MOVE M1NAME M0NAME
C*** DON'T SAVE: MOVE M1PASS M0PASS
C MOVE M1LN1 M0LN1
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 M1LN8 M0LN8
C MOVE M1LN9 M0LN9
C MOVE *DATE M0DATO
C TIME M0TIMO
C *IN54 IFEQ *ON
C MOVE PROF M0PROF
C MOVE USER M0USRO
C WRITEFTP2P1R
C ELSE *IN54 IFEQ *ON
C UPDATFTP2P1R
C END X-*IN54 IFEQ *ON
C* MAKE THE RECORDS FOR THE FTP SCRIPT FILE:
C* HEADINGS
C MOVE *BLANKS FTP2LN
C M1NAME CAT M1PASS:1 FTP2LN
C FTP2LN IFGT *BLANKS
C WRITEFT2P2R
C END
C* LINE 1:
C MOVE *BLANKS FTP2LN
C MOVELM1LN1 FTP2LN
C FTP2LN IFGT *BLANKS
C WRITEFT2P2R
C END
C* LINE 2:
C MOVE *BLANKS FTP2LN
C MOVELM1LN2 FTP2LN
C FTP2LN IFGT *BLANKS
C WRITEFT2P2R
C END
C* LINE 3:
C MOVE *BLANKS FTP2LN
C MOVELM1LN3 FTP2LN
C FTP2LN IFGT *BLANKS
C WRITEFT2P2R
C END
C* LINE 4:
C MOVE *BLANKS FTP2LN
C MOVELM1LN4 FTP2LN
C FTP2LN IFGT *BLANKS
C WRITEFT2P2R
C END
C* LINE 5:
C MOVE *BLANKS FTP2LN
C MOVELM1LN5 FTP2LN
C FTP2LN IFGT *BLANKS
C WRITEFT2P2R
C END
C* LINE 6:
C MOVE *BLANKS FTP2LN
C FTP2LN IFGT *BLANKS
C MOVELM1LN6 FTP2LN
C WRITEFT2P2R
C END
C* LINE 7:
C MOVE *BLANKS FTP2LN
C MOVELM1LN7 FTP2LN
C FTP2LN IFGT *BLANKS
C WRITEFT2P2R
C END
C* LINE 8:
C MOVE *BLANKS FTP2LN
C MOVELM1LN8 FTP2LN
C FTP2LN IFGT *BLANKS
C WRITEFT2P2R
C END
C* LINE 9:
C MOVE *BLANKS FTP2LN
C MOVELM1LN9 FTP2LN
C FTP2LN IFGT *BLANKS
C WRITEFT2P2R
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 MOVE *ON *IN34
C MOVE 'LOG' EXIT
C KEY1 CHAINFTP20P1 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 M0LN1 M1LN1
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 MOVE M0LN8 M1LN8
C MOVE M0LN9 M1LN9
C END *IN54 IFEQ *OFF
C ENDSR
|
(the saved Script Lines, for the default FTP screen set up)
A****************************************************************/
A* SOURCE - FTP20P1 */
A* PROGRAMMER - Booth Martin */
A* DATE - 8/98 */
A* COMMENTS - A Physical file holding the default */
A* values for each individual's FTP Script */
A* File processes. */
A* */
A***************************************************************/
A R FTP2P1R
A*
A M0HOST 20 TEXT('HOST SITES NAME')
A M0NAME 20 TEXT('USERS NAME AT HOST')
A M0PASS 20 TEXT('PASSWORD AT HOST')
A M0LN1 72 TEXT('LINE 1')
A M0LN2 72 TEXT('LINE 2')
A M0LN3 72 TEXT('LINE 3')
A M0LN4 72 TEXT('LINE 4')
A M0LN5 72 TEXT('LINE 5')
A M0LN6 72 TEXT('LINE 6')
A M0LN7 72 TEXT('LINE 7')
A M0LN8 72 TEXT('LINE 8')
A M0LN9 72 TEXT('LINE 9')
A**********************
A* AUDIT TRAIL FIELDS *
A M0TIMO 6S 0 TEXT('TIME')
A M0DATO 8S 0 TEXT('DATE')
A M0PROF 10 TEXT('PROFILE')
A M0USRO 10 TEXT('USER')
A**********************
A K M0PROF
A K M0USRO
|
(The new Script File to do the actual File Transfer) (normally exists but only QTEMP has any data)
A****************************************************************/
A* SOURCE - FTP20P2 */
A* PROGRAMMER - Booth Martin */
A* DATE - 8/98 */
A* COMMENTS - A Physical file holding the Script and */
A* Log for an FTP session. */
A* This file is always empty. */
A* It has member FTPCMDS and */
A* member FTPLOG */
A* */
A****************************************************************/
A R FT2P2R
A*
A FTP2LN 72 TEXT('SCRIPT')
|
A*%%TS SD 19980815 174637 BOOTH REL-V4R2M0 5769-PW1
A****************************************************************/
A* SOURCE - FTP20F */
A* PROGRAMMER - BOOTH MARTIN */
A* DATE - 8/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 REF(*LIBL/FTP20P1 FTP2P1R)
A CHGINPDFT(HI UL LC)
A MSGLOC(17)
A PRINT
A CF12(12 'CANCEL')
A CF23(23 'UNPROTECT')
A R FTP20A
A*%%TS SD 19980815 153820 BOOTH REL-V4R2M0 5769-PW1
A OVERLAY
A WINDOW(3 3 17 72)
A 1 22'FTP site (IP address or name) -
A '
A M1HOST R B 1 1REFFLD(M0HOST)
A N33 DSPATR(PR)
A 34 2 22'Login ID -
A (log to File )'
A N34 2 22'Login ID -
A (log to Screen)'
A M1NAME R B 2 1REFFLD(M0NAME)
A 3 22'Password'
A M1PASS R B 3 1REFFLD(M0PASS)
A 31 DSPATR(PC)
A DSPATR(ND)
A DSPATR(UL)
A 32 3 31'A password is required.'
A COLOR(RED)
A M1LN1 R B 5 1REFFLD(M0LN1)
A N33 DSPATR(PR)
A M1LN2 R B 6 1REFFLD(M0LN2)
A N33 DSPATR(PR)
A M1LN3 R B 7 1REFFLD(M0LN3)
A N33 DSPATR(PR)
A M1LN4 R B 8 1REFFLD(M0LN4)
A N33 DSPATR(PR)
A M1LN5 R B 9 1REFFLD(M0LN5)
A N33 DSPATR(PR)
A M1LN6 R B 10 1REFFLD(M0LN6)
A N33 DSPATR(PR)
A M1LN7 R B 11 1REFFLD(M0LN7)
A N33 DSPATR(PR)
A M1LN8 R B 12 1REFFLD(M0LN8)
A N33 DSPATR(PR)
A M1LN9 R B 13 1REFFLD(M0LN9)
A N33 DSPATR(PR)
A PB1 2Y 0B 15 1PSHBTNFLD
A CHCAVAIL((*COLOR BLU))
A PSHBTNCHC(1 'F12=Cancel' CF12)
A PSHBTNCHC(2 'Log to File')
A PSHBTNCHC(3 'Log to Screen')
A N33 PSHBTNCHC(4 'F23=Unprotect' CF23)
A 33 PSHBTNCHC(5 'F23= Protect' CF23)
A 4 1'FTP script for the session -
A -
A '
A COLOR(BLU)
A 3 56' '
A 14 1' -
A -
A '
A R DUMMY
A TEXT('PREVENTS PREVIOUS SCREEN FROM-
A BEING CLEARED')
A ASSUME
A 5 9' '
|