|
Code:
- CMD PROMPT('Link to another AS/400')
- PARM KWD(SYSTEM) TYPE(*CHAR) LEN(1) RSTD(*YES) +
- VALUES('S' 'T' 'D' 'P' 'Y') MIN(1) +
- PROMPT('Source,Target or Delivery')
- PARM KWD(FUNCTION) TYPE(*CHAR) LEN(1) RSTD(*YES) +
- VALUES('F' 'P' 'O') PROMPT('File +
- Tfr,PassThru,Send Objects')
- PARM KWD(RMTPHONE) TYPE(*CHAR) LEN(15) +
- SPCVAL((*SEARCH) (*S *SEARCH)) +
- PMTCTL(SYSTEM) PROMPT('Remote Phone#')
- PARM KWD(PASSWORD) TYPE(*CHAR) LEN(10) MIN(1) +
- PROMPT('Password for Remote AS/400')
- PARM KWD(OPTION) TYPE(*CHAR) LEN(1) RSTD(*YES) +
- VALUES('S' 'R') PROMPT('Option: S=Send, +
- R=Receive') PMTCTL(FUNCTION1)
- PARM KWD(FROMLIB) TYPE(*CHAR) LEN(10) +
- PROMPT('From Library Name') PMTCTL(FUNCTION)
- PARM KWD(FROMFILE) TYPE(*CHAR) LEN(10) +
- PROMPT('From Data Base Name') PMTCTL(FUNCTION)
- PARM KWD(FROMMBR) TYPE(*CHAR) LEN(10) +
- PROMPT('From Member Name') PMTCTL(FUNCTION)
- PARM KWD(TOLIB) TYPE(*CHAR) LEN(10) PROMPT('Target +
- Library (Dft FROMLIB)') PMTCTL(FUNCTION)
- PARM KWD(TOFILE) TYPE(*CHAR) LEN(10) +
- PROMPT('Target File (Dft FROMFILE)') +
- PMTCTL(FUNCTION)
- PARM KWD(TOMBR) TYPE(*CHAR) LEN(10) +
- PROMPT('Target File Mbr (Dft FROMMBR)') +
- PMTCTL(FUNCTION)
- PARM KWD(REPLACE) TYPE(*CHAR) LEN(1) RSTD(*YES) +
- VALUES('Y' 'N') PROMPT('Replace Member if +
- Exists?') PMTCTL(FUNCTION)
- PARM KWD(SBMJOB) TYPE(*CHAR) LEN(4) RSTD(*YES) +
- DFT(*NO) VALUES(*YES *NO) PROMPT('Submit +
- Job to Batch') PMTCTL(FUNCTION)
- PARM KWD(SCDTIME) TYPE(*CHAR) LEN(9) +
- DFT(*CURRENT) SPCVAL((*CALLBACK) +
- (*CURRENT)) PROMPT('Time to Run Submitted +
- Job') PMTCTL(FUNCTION)
- PARM KWD(HANGUP) TYPE(*CHAR) LEN(4) RSTD(*YES) +
- DFT(*NO) VALUES(*YES *NO) +
- PMTCTL(FUNCTION) PROMPT('Hang up Phone +
- when done')
- PARM KWD(OBJFRMLIB) TYPE(*NAME) LEN(10) +
- PROMPT('Library') PMTCTL(SNDOBJ)
- PARM KWD(OBJ) TYPE(*GENERIC) LEN(10) +
- SPCVAL((*ALL)) MAX(1) PMTCTL(SNDOBJ) +
- PROMPT('Objects')
- PARM KWD(OBJTYPE) TYPE(*CHAR) LEN(7) RSTD(*YES) +
- DFT(*ALL) VALUES(*CMD *DTAARA *FILE *JOBD +
- *JOBQ *JRN *JRNRCV *MENU *MSGF *MSGQ +
- *PGM) SPCVAL((*ALL)) CHOICE('*ALL, *CMD, +
- *DTAARA...') PMTCTL(SNDOBJ) +
- PROMPT('Object types')
- PARM KWD(FILEMBR) TYPE(*GENERIC) LEN(10) +
- DFT(*ALL) SPCVAL((*ALL)) PMTCTL(SNDOBJ) +
- PROMPT('File members')
- PARM KWD(TGTRLS) TYPE(*CHAR) LEN(8) RSTD(*YES) +
- DFT(*CURRENT) VALUES(*CURRENT *PRV) +
- MIN(0) PMTCTL(SNDOBJ) PROMPT('Target +
- Release')
- PARM KWD(OBJTOLIB) TYPE(*NAME) LEN(10) +
- PMTCTL(SNDOBJ) PROMPT('Restore to Library')
-
- SYSTEM: PMTCTL CTL(SYSTEM) COND((*EQ S)) NBRTRUE(*EQ 1)
- FUNCTION: PMTCTL CTL(FUNCTION) COND((*EQ F)) NBRTRUE(*EQ 1)
- FUNCTION1: PMTCTL CTL(FUNCTION) COND((*EQ F) (*EQ O)) +
- NBRTRUE(*EQ 1)
- PASSTHRU: PMTCTL CTL(FUNCTION) COND((*EQ P)) NBRTRUE(*EQ 1)
- SNDOBJ: PMTCTL CTL(FUNCTION) COND((*EQ O)) NBRTRUE(*EQ 1)
- PGM PARM(&SYSTEM &FUNCTION &RMTPHONE &PASSWORD +
- &OPTION &FROMLIB &FROMFILE &FROMMBR +
- &TOLIB &TOFILE &TOMBR &REPLACE &SBMJOB +
- &SCDTIME &HANGUP &OBJFRMLIB &OBJ &OBJTYPE +
- &FILEMBR &TGTRLS &OBJTOLIB)
- DCL VAR(&SYSTEM) TYPE(*CHAR) LEN(1)
- DCL VAR(&FUNCTION) TYPE(*CHAR) LEN(1)
- DCL VAR(&OPTION) TYPE(*CHAR) LEN(1)
- DCL VAR(&FROMLIB) TYPE(*CHAR) LEN(10)
- DCL VAR(&FROMFILE) TYPE(*CHAR) LEN(10)
- DCL VAR(&FROMMBR) TYPE(*CHAR) LEN(10)
- DCL VAR(&TYPE) TYPE(*CHAR) LEN(6) VALUE(' ')
- DCL VAR(&TOLIB) TYPE(*CHAR) LEN(10)
- DCL VAR(&TOFILE) TYPE(*CHAR) LEN(10)
- DCL VAR(&TOMBR) TYPE(*CHAR) LEN(10)
- DCL VAR(&TODATE) TYPE(*CHAR) LEN(6) VALUE(' ')
- DCL VAR(&REPLACE) TYPE(*CHAR) LEN(1)
- DCL VAR(&SBMJOB) TYPE(*CHAR) LEN(4)
- DCL VAR(&SCDTIME) TYPE(*CHAR) LEN(9)
- DCL VAR(&SVSCDTIME) TYPE(*CHAR) LEN(9)
- DCL VAR(&QTIME) TYPE(*CHAR) LEN(6)
- DCL VAR(&QTIMEN1) TYPE(*DEC) LEN(6)
- DCL VAR(&QTIMEN2) TYPE(*DEC) LEN(6)
- DCL VAR(&HANGUP) TYPE(*CHAR) LEN(4)
- DCL VAR(&OBJFRMLIB) TYPE(*CHAR) LEN(10)
- DCL VAR(&OBJ) TYPE(*CHAR) LEN(10)
- DCL VAR(&OBJTYPE) TYPE(*CHAR) LEN(7)
- DCL VAR(&FILEMBR) TYPE(*CHAR) LEN(10)
- DCL VAR(&TGTRLS) TYPE(*CHAR) LEN(8)
- DCL VAR(&OBJTOLIB) TYPE(*CHAR) LEN(10)
-
- DCL VAR(&RMTPHONE) TYPE(*CHAR) LEN(15)
- DCL VAR(&RMTLOCNAME) TYPE(*CHAR) LEN(8)
- DCL VAR(&CNNDEV) TYPE(*CHAR) LEN(10)
- DCL VAR(&CNNDEVB4) TYPE(*CHAR) LEN(10)
- DCL VAR(&PASSWORD) TYPE(*CHAR) LEN(10)
- DCL VAR(&RCODE) TYPE(*CHAR) LEN(2)
- DCL VAR(&MSGNUM) TYPE(*CHAR) LEN(8)
- DCL VAR(&USERID) TYPE(*CHAR) LEN(10)
- DCL VAR(&RMTUSERID) TYPE(*CHAR) LEN(10)
- DCL VAR(&BATCHJOB) TYPE(*CHAR) LEN(1)
- DCL VAR(&CFGSTS) TYPE(*DEC) LEN(5 0)
- DCL VAR(&REPLY) TYPE(*CHAR) LEN(1)
- DCL VAR(&REPLY2) TYPE(*CHAR) LEN(1)
- DCL VAR(&REPLY3) TYPE(*CHAR) LEN(1)
- DCL VAR(&STRLEN) TYPE(*DEC) LEN(3) VALUE(10)
- DCL VAR(&STRPOS) TYPE(*DEC) LEN(3) VALUE(1)
- DCL VAR(&PATLEN) TYPE(*DEC) LEN(3) VALUE(1)
- DCL VAR(&RESULT) TYPE(*DEC) LEN(3)
- DCL VAR(&RTNMBR) TYPE(*CHAR) LEN(10)
- DCL VAR(&FROMGEN) TYPE(*CHAR) LEN(10)
- DCL VAR(&RECORDS) TYPE(*DEC) LEN(15 5)
- DCL VAR(&TOTALBYTE) TYPE(*DEC) LEN(15 5)
- DCL VAR(&SECONDS) TYPE(*DEC) LEN(15 5)
- DCL VAR(&MINUTES) TYPE(*DEC) LEN(15 2)
- DCL VAR(&MINUTESA) TYPE(*CHAR) LEN(10)
- DCL VAR(&SYSTEMO) TYPE(*CHAR) LEN(1)
- DCL VAR(&ERRORSW) TYPE(*LGL) /* Error +
- switch */
- DCL VAR(&MSGID) TYPE(*CHAR) LEN(7) /* Message +
- ID */
- DCL VAR(&MSGDTA) TYPE(*CHAR) LEN(100) /* Message +
- data area */
- DCL VAR(&MSGF) TYPE(*CHAR) LEN(10) /* Message +
- file name */
- DCL VAR(&MSGFLIB) TYPE(*CHAR) LEN(10) /* Message +
- library */
- DCL VAR(&CMDMSG) TYPE(*CHAR) LEN(255)
- DCL VAR(&APOST) TYPE(*CHAR) LEN(1)
- DCL VAR(&TIME) TYPE(*CHAR) LEN(6)
- DCL VAR(&TIMEI) TYPE(*DEC) LEN(15)
- DCL VAR(&TIMEO) TYPE(*CHAR) LEN(22)
- CHGVAR VAR(&APOST) VALUE(X'7D')
- ADDLIBLE LIB(TAATOOL) POSITION(*LAST)
- MONMSG MSGID(CPF0000)
- RTVUSRPRF RTNUSRPRF(&RMTUSERID)
- CHGVAR VAR(&SVSCDTIME) VALUE(&SCDTIME)
-
- /* IF *SEARCH SPECIFIED FOR PHONE NUMBER, GO TO IT */
-
- IF COND(&RMTPHONE *EQ '*SEARCH ') THEN(DO)
- CALL PGM(ECSSRCHR) PARM(&RMTPHONE)
- IF COND(&RMTPHONE *EQ '*SEARCH ') THEN(DO)
- SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA('No +
- Phone Number selected. Program +
- cancelled.') MSGTYPE(*ESCAPE)
- GOTO CMDLBL(ENDPROGRAM)
- ENDDO
- SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA('Setting +
- controller to dial' *BCAT &RMTPHONE) +
- TOPGMQ(*EXT) MSGTYPE(*STATUS)
- ENDDO
-
- IF COND(&RMTUSERID *EQ 'QUSER ' *AND +
- &SCDTIME *NE '*CALLBACK') THEN(DO)
- IF COND(&SYSTEM *EQ 'T') THEN(CHGVAR +
- VAR(&RMTLOCNAME) VALUE('TEMPLCL'))
- IF COND(&SYSTEM *EQ 'S') THEN(CHGVAR +
- VAR(&RMTLOCNAME) VALUE('TEMPRMT'))
-
- /* CHANGE MADE FOR LEASED LINE TO HANDLING */
-
- IF COND(&SYSTEM *EQ 'D') THEN(CHGVAR +
- VAR(&RMTLOCNAME) VALUE('DYNDLV'))
-
- /* CHANGE MADE FOR LEASED LINE TO HANDLING */
-
- IF COND(&SYSTEM *EQ 'P') THEN(CHGVAR +
- VAR(&RMTLOCNAME) VALUE('PDSI'))
- IF COND(&SYSTEM *EQ 'Y') THEN(CHGVAR +
- VAR(&RMTLOCNAME) VALUE('DYNY2K'))
-
- CRTDDMF FILE(QTEMP/RMTCMD) RMTFILE(*LIBL/PMENUS) +
- RMTLOCNAME(&RMTLOCNAME) TEXT('Temporary +
- DDM file to use SBM-RMTCMD')
- ENDDO
-
- /* ONLY DO THIS STUFF IF NOT RECEIVE OBJECT */
-
- IF COND(&OPTION *EQ 'R' *AND &FUNCTION *EQ 'O') +
- THEN(DO)
- GOTO CMDLBL(SKIPSTUFF)
- ENDDO
-
- IF COND(&FUNCTION *NE ' ' *AND &FUNCTION *NE +
- 'O' *AND &PASSWORD *EQ ' ') THEN(DO)
- SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) +
- MSGDTA('Password cannot be Blank. Please +
- re-try') MSGTYPE(*ESCAPE)
- GOTO CMDLBL(ENDPROGRAM)
- ENDDO
-
- /* GET USER PROFILE */
-
- RTVUSRPRF RTNUSRPRF(&USERID)
-
- /* GET USER PROFILE */
-
- RTVJOBA TYPE(&BATCHJOB)
-
- /* SETUP VARIABLES FOR SOURCE OR TARGET, AND FIGURE OUT THERE +
- CONFIGURATION STATUS */
-
- IF COND(&SYSTEM *EQ 'D') THEN(DO)
- CHGVAR VAR(&RMTLOCNAME) VALUE('DYNDLV')
- CHGVAR VAR(&CNNDEV) VALUE('DYNDLV')
- ENDDO
-
- IF COND(&SYSTEM *EQ 'P') THEN(DO)
- CHGVAR VAR(&RMTLOCNAME) VALUE('PDSI')
- CHGVAR VAR(&CNNDEV) VALUE('PDSI')
- ENDDO
-
- IF COND(&SYSTEM *EQ 'Y') THEN(DO)
- CHGVAR VAR(&RMTLOCNAME) VALUE('DYNY2K')
- CHGVAR VAR(&CNNDEV) VALUE('DYNY2K')
- ENDDO
-
- IF COND(&SYSTEM *EQ 'S') THEN(DO)
- CHGVAR VAR(&RMTLOCNAME) VALUE('TEMPRMT')
- CHGVAR VAR(&CNNDEV) VALUE('TEMPLCL')
- RTVCFGSTS CFGD(TEMPLCL) CFGTYPE(*LIN) STSCDE(&CFGSTS)
- MONMSG MSGID(CPF0000) EXEC(DO)
- CHGVAR VAR(&CFGSTS) VALUE(99)
- ENDDO
-
- /* CHANGE MADE 10/17/94 BY ART TOSTAINE, JR. */
- /* IF *CALLBACK, PAUSE 3 MINUTES */
-
- IF COND(&SCDTIME *EQ '*CALLBACK') THEN(DO)
- VRYCFG CFGOBJ(TEMPRMT) CFGTYPE(*LIN) STATUS(*OFF)
- MONMSG CPF0000
- VRYCFG CFGOBJ(TEMPRMT) CFGTYPE(*CTL) STATUS(*OFF)
- MONMSG CPF0000
- DLYJOB DLY(180)
- CHGVAR VAR(&SCDTIME) VALUE('*CURRENT')
- ENDDO
-
- /* IF SOURCE SYSTEM CONNECT PENDING AND PHONE NUMBER GIVEN, VARY IT +
- OFF AND CHANGE THE PHONE NUMBER ON THE CONTROLLER */
-
- IF COND(&CFGSTS *EQ 40 *AND &RMTPHONE *NE ' ') +
- THEN(DO)
- VRYCFG CFGOBJ(TEMPLCL) CFGTYPE(*LIN) STATUS(*OFF)
- VRYCFG CFGOBJ(TEMPLCL) CFGTYPE(*CTL) STATUS(*OFF)
- CHGCTLAPPC CTLD(TEMPLCL) CNNNBR(&RMTPHONE)
- GOTO CMDLBL(SKPCRTLCL) /* Skip create local +
- configurations */
- ENDDO
-
- /* VARIED OFF, CHANGE PHONE NUMBER */
-
- IF COND(&CFGSTS *EQ 0) THEN(DO)
- CHGCTLAPPC CTLD(TEMPLCL) CNNNBR(&RMTPHONE)
-
- /* CHECK IF TARGET CONFIGURATIONS ARE ACTIVE */
-
- RTVCFGSTS CFGD(TEMPRMT) CFGTYPE(*LIN) STSCDE(&CFGSTS)
- IF COND(&CFGSTS *EQ 60) THEN(DO) /* Active */
- SNDUSRMSG MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA('Target +
- Configs currently active. "C" to Cancel +
- Vary on, "G" to Vary on Device') VALUES(C +
- G) DFT(C) MSGRPY(&REPLY)
- IF COND(&REPLY *EQ 'C') THEN(DO)
- GOTO CMDLBL(ENDPROGRAM)
- ENDDO /* Reply *EQ C */
- VRYCFG CFGOBJ(TEMPRMT) CFGTYPE(*LIN) STATUS(*OFF)
- MONMSG MSGID(CPF0000)
- VRYCFG CFGOBJ(TEMPRMT) CFGTYPE(*CTL) STATUS(*OFF)
- MONMSG MSGID(CPF0000)
- DLYJOB DLY(2)
- ENDDO /* &CFGSTS *EQ 60 */
-
- IF COND(&CFGSTS *EQ 40) THEN(DO) /* Connect +
- Pending */
- SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA('Target +
- Communications VARIED ON. VARYing Off +
- Target now.') TOPGMQ(*EXT) MSGTYPE(*STATUS)
- VRYCFG CFGOBJ(TEMPRMT) CFGTYPE(*LIN) STATUS(*OFF)
- VRYCFG CFGOBJ(TEMPRMT) CFGTYPE(*CTL) STATUS(*OFF)
- DLYJOB DLY(2)
- ENDDO
- GOTO CMDLBL(SKPCRTLCL) /* Skip Create +
- Configurations */
- ENDDO /* CFGSTS *EQ 40 */
-
- IF COND(&CFGSTS *EQ 60) THEN(DO) /* Active */
- GOTO CMDLBL(SKPCRTLCL)
- ENDDO
-
- CRTLINSDLC LIND(TEMPLCL) RSRCNAME(LIN011) ONLINE(*NO) +
- ROLE(*PRI) CNN(*SWTPP) EXCHID(05600001) +
- LINESPEED(2400) AUTODIAL(*YES) +
- DIALCMD(*V25BIS) DUPLEX(*FULL) +
- TEXT('Local Line for PassThru & File +
- Transfer')
- MONMSG MSGID(CPF0000)
- CRTCTLAPPC CTLD(TEMPLCL) LINKTYPE(*SDLC) ONLINE(*NO) +
- SWITCHED(*YES) APPN(*NO) +
- SWTLINLST(TEMPLCL) MAXFRAME(521) +
- RMTNETID(*NONE) EXCHID(05600002) +
- CNNNBR(&RMTPHONE) ROLE(*SEC) STNADR(01) +
- TEXT('Local Controller for PassThru & +
- File Transfer')
- MONMSG MSGID(CPF0000)
- CRTDEVAPPC DEVD(TEMPLCL) RMTLOCNAME(TEMPRMT) +
- ONLINE(*NO) LCLLOCNAME(TEMPLCL) +
- RMTNETID(*NONE) CTL(TEMPLCL) MODE(BLANK) +
- APPN(*NO) TEXT('Local Device for PassThru +
- / File Transfer')
- MONMSG MSGID(CPF0000)
-
- SKPCRTLCL: DLYJOB DLY(1)
- VRYCFG CFGOBJ(TEMPLCL) CFGTYPE(*LIN) STATUS(*ON)
- DLYJOB DLY(4)
- VRYCFG CFGOBJ(TEMPLCL) CFGTYPE(*CTL) STATUS(*ON)
- ENDDO /* SYSTEM *EQ S */
-
- IF COND(&SYSTEM *EQ 'T') THEN(DO)
- RTVCFGSTS CFGD(TEMPRMT) CFGTYPE(*LIN) STSCDE(&CFGSTS)
- /* MONMSG MSGID(CPF9801) EXEC(DO) */
- /* CHGVAR &CFGSTS 99 */
- /* ENDDO */
- IF COND(&CFGSTS *EQ 0) THEN(DO)
- RTVCFGSTS CFGD(TEMPLCL) CFGTYPE(*LIN) STSCDE(&CFGSTS)
- /* MONMSG MSGID(CPF9801) EXEC(DO) */
- /* CHGVAR &CFGSTS 99 */
- /* ENDDO */
- IF COND(&CFGSTS *EQ 60) THEN(DO) /* Active */
- SNDUSRMSG MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA('Source +
- Configs currently active. Enter "C" to +
- Cancel Vary on, "G" to Ignore') VALUES(C +
- G) DFT(C) MSGRPY(&REPLY)
-
- IF COND(&REPLY *EQ 'C') THEN(DO)
- GOTO CMDLBL(ENDPROGRAM)
- ENDDO /* Reply *EQ "C" */
-
- /* VARY OFF SOURCE CONFIGURATIONS */
-
- VRYCFG CFGOBJ(TEMPLCL) CFGTYPE(*LIN) STATUS(*OFF)
- MONMSG MSGID(CPF0000)
- VRYCFG CFGOBJ(TEMPLCL) CFGTYPE(*CTL) STATUS(*OFF)
- MONMSG MSGID(CPF0000)
- ENDDO /* TEMPLCL CFGSTS *EQ 60 */
-
- IF COND(&CFGSTS *EQ 40) THEN(DO) /* Connect +
- Pending */
- SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA('Source +
- Communications VARIED ON. VARYing Off +
- Source now.') TOPGMQ(*EXT) MSGTYPE(*STATUS)
- VRYCFG CFGOBJ(TEMPLCL) CFGTYPE(*LIN) STATUS(*OFF)
- VRYCFG CFGOBJ(TEMPLCL) CFGTYPE(*CTL) STATUS(*OFF)
- ENDDO /* CFGSTS *EQ "40" */
- ENDDO /* TEMPRMT CFGSTS *EQ 0 */
-
- CHGVAR VAR(&RMTLOCNAME) VALUE('TEMPLCL')
- CHGVAR VAR(&CNNDEV) VALUE('TEMPRMT')
- CRTLINSDLC LIND(TEMPRMT) RSRCNAME(LIN011) ONLINE(*YES) +
- ROLE(*SEC) CNN(*SWTPP) EXCHID(05600002) +
- LINESPEED(2400) AUTODIAL(*YES) +
- DIALCMD(*V25BIS) STNADR(01) DUPLEX(*FULL) +
- TEXT('Remote Line for PassThru / File +
- Transfer')
- MONMSG MSGID(CPF0000)
- CRTCTLAPPC CTLD(TEMPRMT) LINKTYPE(*SDLC) ONLINE(*YES) +
- SWITCHED(*YES) APPN(*NO) +
- SWTLINLST(TEMPRMT) MAXFRAME(521) +
- RMTNETID(*NONE) EXCHID(05600001) +
- INLCNN(*ANS) ROLE(*PRI) STNADR(01) +
- TEXT('Remote Controller for PassThru / +
- File Transfer')
- MONMSG MSGID(CPF0000)
- CRTDEVAPPC DEVD(TEMPRMT) RMTLOCNAME(TEMPLCL) +
- ONLINE(*YES) LCLLOCNAME(TEMPRMT) +
- RMTNETID(*NONE) CTL(TEMPRMT) MODE(BLANK) +
- APPN(*NO) TEXT('Remote Device for +
- PassThru / File Transfer')
- MONMSG MSGID(CPF0000)
- VRYCFG CFGOBJ(TEMPRMT) CFGTYPE(*LIN) STATUS(*ON)
- VRYCFG CFGOBJ(TEMPRMT) CFGTYPE(*CTL) STATUS(*ON)
- ENDDO /* SYSTEM *EQ "T" */
-
- RMVMSG MSGQ(*PGMQ) CLEAR(*ALL)
-
- SKIPSTUFF:
-
- IF COND(&FUNCTION *EQ 'F') THEN(DO)
-
- /* DECIDE IF GENERIC NAME GIVEN */
-
- CALL PGM(QCLSCAN) PARM(&FROMMBR &STRLEN &STRPOS +
- '*' &PATLEN '0' '0' ' ' &RESULT)
- IF COND(&RESULT *GT 0) THEN(DO)
- CHGVAR VAR(&RESULT) VALUE(&RESULT - 1)
- GOTO CMDLBL(GENERIC)
- ENDDO
-
- /* SET UP TO DEFAULTS IF NOT GIVEN */
-
- IF COND(&TOLIB *EQ ' ') THEN(DO)
- CHGVAR VAR(&TOLIB) VALUE(&FROMLIB)
- ENDDO
- IF COND(&TOFILE *EQ ' ') THEN(DO)
- CHGVAR VAR(&TOFILE) VALUE(&FROMFILE)
- ENDDO
- IF COND(&TOMBR *EQ ' ') THEN(DO)
- CHGVAR VAR(&TOMBR) VALUE(&FROMMBR)
- ENDDO
-
- /* CHECK IF TO LIBRARY & TO FILE EXIST IF RECEIVE */
-
- IF COND(&OPTION *EQ 'R') THEN(DO)
- CHKOBJ OBJ(&TOLIB) OBJTYPE(*LIB)
- MONMSG MSGID(CPF9801) EXEC(DO)
- RMVMSG PGMQ(*EXT) CLEAR(*ALL)
- SNDUSRMSG MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA('Library' +
- *BCAT &TOLIB *TCAT ' does not exist. +
- Create it? (Y/N)') VALUES(Y N) +
- MSGRPY(&REPLY2)
- IF COND(&REPLY2 *EQ 'N') THEN(DO)
- SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA('LINK400 +
- Receive cancelled by user') MSGTYPE(*ESCAPE)
- GOTO CMDLBL(ENDPROGRAM)
- ENDDO
- IF COND(&REPLY2 *EQ 'Y') THEN(DO)
- SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) +
- MSGDTA('Creating' *BCAT &TOLIB) +
- TOPGMQ(*EXT) MSGTYPE(*STATUS)
- CRTLIB LIB(&TOLIB) TEXT('Created by LINK400')
- ENDDO
-
- /* SOURCE FILE */
-
- IF COND(%SST(&TOFILE 1 1) *EQ 'Q') THEN(DO)
- CHKOBJ OBJ(&TOFILE) OBJTYPE(*LIB)
- MONMSG MSGID(CPF9801) EXEC(DO)
- RMVMSG PGMQ(*EXT) CLEAR(*ALL)
- SNDUSRMSG MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA('Source +
- File' *BCAT &TOFILE *TCAT ' does not +
- exist. Create it? (Y/N)') VALUES(Y N) +
- MSGRPY(&REPLY2)
- IF COND(&REPLY2 *EQ 'N') THEN(DO)
- SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA('LINK400 +
- Receive cancelled by user') MSGTYPE(*ESCAPE)
- GOTO CMDLBL(ENDPROGRAM)
- ENDDO
- IF COND(&REPLY2 *EQ 'Y') THEN(DO)
- SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) +
- MSGDTA('Creating' *BCAT &TOFILE) +
- TOPGMQ(*EXT) MSGTYPE(*STATUS)
- CRTSRCPF FILE(&TOLIB/&TOFILE) TEXT('Created by LINK400')
- ENDDO
- ENDDO
- ENDDO
- ENDDO
- ENDDO
-
- IF COND(&SBMJOB *EQ '*YES') THEN(DO)
- RTVSYSVAL SYSVAL(QTIME) RTNVAR(&QTIME)
-
- SBMJOB CMD(CALL PGM(LINK400S) PARM(&OPTION &FROMLIB +
- &FROMFILE &FROMMBR &TYPE &TOLIB &TOFILE +
- &TOMBR &TODATE &REPLACE &RMTLOCNAME +
- &PASSWORD &RCODE &MSGNUM &HANGUP)) +
- JOB(&FROMMBR) JOBPTY(8) SCDTIME(&SCDTIME)
-
- SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) +
- MSGDTA('Transfer' *BCAT &FROMLIB *TCAT +
- '/' *CAT &FROMFILE *TCAT '/' *CAT +
- &FROMMBR *TCAT ' Submitted') MSGTYPE(*COMP)
- GOTO CMDLBL(ENDPROGRAM)
- ENDDO
-
- IF COND(&SBMJOB *EQ '*NO ') THEN(DO)
- CALL PGM(QY2FTML) PARM(&OPTION &FROMLIB &FROMFILE +
- &FROMMBR &TYPE &TOLIB &TOFILE &TOMBR +
- &TODATE &REPLACE &RMTLOCNAME &PASSWORD +
- &RCODE &MSGNUM)
- MONMSG MSGID(CPF0000 CPD7A07 CPD7A03) EXEC(DO)
- GOTO CMDLBL(ERROR)
- ENDDO
- ENDDO
- ENDDO
-
- IF COND((&FUNCTION *EQ 'P')) THEN(DO)
- STRPASTHR RMTLOCNAME(*CNNDEV) CNNDEV(&CNNDEV) +
- RMTUSER(*CURRENT) RMTPWD(&PASSWORD)
- MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(ERROR))
- CHGVAR VAR(&REPLY) VALUE(' ') /* clear out previous +
- replies */
- IF COND(&SYSTEM *NE 'D' *AND +
- &SYSTEM *NE 'Y' *AND +
- &SYSTEM *NE 'P') THEN(DO)
- RMVMSG PGMQ(*EXT) CLEAR(*ALL)
- SNDUSRMSG MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA('Do you +
- want to hang up the modem? (Y/N)') +
- VALUES(Y N) DFT(N) MSGRPY(&REPLY)
- ENDDO
- ENDDO
-
- /* SEND OBJECT */
-
- IF COND(&FUNCTION *EQ 'O') THEN(DO)
- IF COND(&OPTION *EQ 'S') THEN(DO)
- CRTSAVF FILE(QTEMP/SAVF) TEXT('Temporary Save file +
- for LINK400')
- MONMSG MSGID(CPF5813 CPF7302) /* Already Exists */
- SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA('Saving +
- Objects in library' *BCAT &OBJFRMLIB) +
- TOPGMQ(*EXT) MSGTYPE(*STATUS)
- SAVOBJ OBJ(&OBJ) LIB(&OBJFRMLIB) DEV(*SAVF) +
- OBJTYPE(&OBJTYPE) SAVF(QTEMP/SAVF) +
- UPDHST(*NO) TGTRLS(&TGTRLS) CLEAR(*ALL) +
- FILEMBR((*ALL (&FILEMBR))) DTACPR(*YES)
- /* MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(ERROR)) */
-
- /* MAKE SURE QUSRTOOLS EXISTS FOR COPY SAVE FILE */
-
- /* CHKOBJ OBJ(CPYFRMSAVF) OBJTYPE(*CMD) */
- /* MONMSG MSGID(CPF9801) EXEC(DO) */
- /* CRTTAATOOL TOOL(CPYFRMSAVF) CRTFILLIB(QGPL) */
- /* ENDDO */
-
- CRTPF FILE(QTEMP/CPYSAVF) RCDLEN(528) +
- TEXT('Temporary Save File Copy by Link400')
- MONMSG MSGID(CPF5813 CPF7302) /* Already Exists */
-
- /* COPY SAVE FILE TO DATABASE FILE TO SEND IT */
-
- /* CPYFRMSAVF FRMSAVF(QTEMP/SAVF) TODBF(QTEMP/CPYSAVF) */
-
- /* CLEAR SAVE FILE (NO LONGER NEEDED) */
-
- CLRSAVF FILE(QTEMP/SAVF)
-
- RMVMSG PGMQ(*EXT) CLEAR(*ALL)
-
- /* CALCULATE APPROXIMATE TIME TO SEND THIS FILE */
-
- GETNBRRCS FILE(QTEMP/CPYSAVF) NBRRECS(&RECORDS)
- CHGVAR VAR(&TOTALBYTE) VALUE(&RECORDS * 528)
- CHGVAR VAR(&SECONDS) VALUE(&TOTALBYTE / 1200)
- CHGVAR VAR(&MINUTES) VALUE(&SECONDS / 60)
- CHGVAR VAR(&MINUTES) VALUE(&MINUTES + 1)
- CHGVAR VAR(&MINUTESA) VALUE(&MINUTES)
- SNDUSRMSG MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA('File +
- will take' *BCAT &MINUTESA *BCAT 'minutes +
- to send at 9600. Continue(Y/N)?') +
- VALUES(Y N) DFT(Y) MSGRPY(&REPLY3)
- IF COND(&REPLY3 *EQ 'N') THEN(DO)
- SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA('Program +
- cancelled by user') MSGTYPE(*ESCAPE)
- GOTO CMDLBL(ENDPROGRAM)
- ENDDO
-
- RTVSYSVAL SYSVAL(QTIME) RTNVAR(&TIME)
- CHGVAR VAR(&TIMEI) VALUE(&TIME)
- /* EDTVAR CHROUT(&TIMEO) NUMINP(&TIMEI) EDTCDE(W) */
- SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA('Sending +
- Save file to Remote System. Started at' +
- *BCAT &TIMEO) TOPGMQ(*EXT) MSGTYPE(*STATUS)
- CALL PGM(QY2FTML) PARM('S' 'QTEMP' 'CPYSAVF' +
- 'CPYSAVF' &TYPE 'QGPL' 'CPYSAVF' +
- 'CPYSAVF' &TODATE 'Y' &RMTLOCNAME +
- &PASSWORD &RCODE &MSGNUM)
- MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(ERROR))
-
- /* WANT TO RESTORE OBJECTS ON REMOTE SYSTEM, CREATE DDM FILE TO */
- /* USE SBM-RMTCMD */
-
- CRTDDMF FILE(QTEMP/RMTCMD) RMTFILE(*LIBL/PMENUS) +
- RMTLOCNAME(&RMTLOCNAME) TEXT('Temporary +
- DDM file to use SBM-RMTCMD')
- RMVMSG CLEAR(*ALL)
- IF COND(&OBJTOLIB *NE ' ') THEN(DO)
- SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) +
- MSGDTA('Restoring Objects on Remote +
- System') TOPGMQ(*EXT) MSGTYPE(*STATUS)
- IF COND(&SYSTEM *EQ 'S') THEN(CHGVAR +
- VAR(&SYSTEMO) VALUE('T'))
- IF COND(&SYSTEM *EQ 'T') THEN(CHGVAR +
- VAR(&SYSTEMO) VALUE('S'))
-
- /* CREATE DATA AREA WITH SENDERS USERID */
-
- CRTDTAARA DTAARA(CCALIB/LINK400D) TYPE(*CHAR) LEN(10) +
- VALUE(&RMTUSERID)
- MONMSG MSGID(CPF1023) EXEC(DO)
- CHGDTAARA DTAARA(CCALIB/LINK400D (1 10)) +
- VALUE(&RMTUSERID)
- ENDDO
-
- SBMRMTCMD CMD('SBMJOB CMD(link400 system(' *CAT +
- &SYSTEMO *TCAT ') FUNCTION(O) OPTION(R) +
- objfrmlib(' *CAT &OBJFRMLIB *TCAT ') +
- objtolib(' *CAT &OBJTOLIB *TCAT ')) +
- JOB(RSTOBJ)') DDMFILE(QTEMP/RMTCMD)
- RCVMSG
- DLTF FILE(QTEMP/RMTCMD)
-
- RCLRSC
- ENDDO /* OBJTOLIB *NE ' ' */
- ENDDO /* OPTION *EQ 'S' */
-
- IF COND(&OPTION *EQ 'R') THEN(DO)
-
- /* MAKE SURE QUSRTOOLS EXISTS FOR COPY SAVE FILE */
-
- /* CHKOBJ OBJ(CPYFRMSAVF) OBJTYPE(*CMD) */
- /* MONMSG MSGID(CPF9801) EXEC(DO) */
- /* ADDLIBLE LIB(TAATOOL) POSITION(*LAST) */
- /* CRTTAATOOL TOOL(CPYFRMSAVF) CRTFILLIB(QGPL) */
- /* ENDDO */
-
- /* FIRST CREATE SAVE FILE */
-
- CRTSAVF FILE(QTEMP/SAVF) TEXT('Temporary Save file +
- for LINK400')
- MONMSG MSGID(CPF5813 CPF7302) /* Already Exists */
- /* CPYTOSAVF FRMDBF(QGPL/CPYSAVF) TOSAVF(QTEMP/SAVF) */
-
- /* CHECK IF LIBRARY THERE */
-
- CHKOBJ OBJ(&OBJTOLIB) OBJTYPE(*LIB)
- MONMSG MSGID(CPF9801) EXEC(DO)
- CRTLIB LIB(&OBJTOLIB) TEXT('Created by Link400 +
- Object Receive')
- ENDDO
-
- RMVMSG MSGQ(*PGMQ) CLEAR(*ALL)
- RSTOBJ OBJ(*ALL) SAVLIB(&OBJFRMLIB) DEV(*SAVF) +
- SAVF(QTEMP/SAVF) MBROPT(*ALL) +
- ALWOBJDIF(*ALL) RSTLIB(&OBJTOLIB)
- MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(RTNGENERIC))
- CLRSAVF FILE(QTEMP/SAVF)
- ENDDO
- ENDDO
-
- RTNGENERIC: IF COND(&SBMJOB *NE '*YES') THEN(DO)
- IF COND(&REPLY *EQ 'Y' *OR &HANGUP *EQ '*YES') +
- THEN(DO)
- VRYCFG CFGOBJ(&CNNDEV) CFGTYPE(*LIN) STATUS(*OFF)
- MONMSG MSGID(CPF0000)
- VRYCFG CFGOBJ(&CNNDEV) CFGTYPE(*CTL) STATUS(*OFF)
- MONMSG MSGID(CPF0000)
- VRYCFG CFGOBJ(TEMPRMT) CFGTYPE(*LIN) STATUS(*ON)
- MONMSG MSGID(CPF0000)
- VRYCFG CFGOBJ(TEMPRMT) CFGTYPE(*CTL) STATUS(*ON)
- MONMSG MSGID(CPF0000)
- ENDDO
- ENDDO
-
- PGMMSG: RCVMSG MSGTYPE(*ANY) MSGDTA(&MSGDTA) MSGID(&MSGID) +
- MSGF(&MSGF) MSGFLIB(&MSGFLIB)
- IF COND(&SVSCDTIME *EQ '*CALLBACK') THEN(GOTO +
- CMDLBL(ENDPROGRAM))
- IF COND(&MSGID *EQ ' ') THEN(GOTO +
- CMDLBL(ENDPROGRAM))
- IF COND(&MSGID *EQ 'CPI7A01') THEN(GOTO +
- CMDLBL(PGMMSG)) /* File Transfer Started */
- IF COND(&MSGID *EQ 'CPI7A02') THEN(GOTO +
- CMDLBL(PGMMSG)) /* File Transfer Started */
- IF COND(&MSGID *EQ 'CPC9150') THEN(GOTO +
- CMDLBL(PGMMSG)) /* Remote Commond +
- Completed */
- IF COND(&MSGID *EQ 'CPI9155') THEN(GOTO +
- CMDLBL(PGMMSG)) /* Remote Commond +
- Completed */
-
- /* SPECIAL ERROR IF LIBRARY NOT FOUND */
-
- IF COND(&MSGID *EQ 'CPD7A07') THEN(DO)
- IF COND(%SST(&MSGDTA 9 7) *EQ 'CPD7A50') THEN(DO)
- SNDPGMMSG MSGID(CPD7A50) MSGF(QCPFMSG) +
- MSGDTA(&FROMLIB) MSGTYPE(*ESCAPE)
- GOTO CMDLBL(PGMMSG)
- ENDDO /* MSGID CPD7A07 */
-
- /* SPECIAL MESSAGE FOR FILE NOT FOUND */
-
- IF COND(%SST(&MSGDTA 9 7) *EQ 'CPD7A36') THEN(DO)
- CHGVAR VAR(&MSGDTA) VALUE(' ')
- CHGVAR VAR(&MSGDTA) VALUE(&FROMLIB)
- CHGVAR VAR(%SST(&MSGDTA 33 10)) VALUE(&FROMFILE)
- SNDPGMMSG MSGID(CPD7A36) MSGF(QCPFMSG) +
- MSGDTA(&MSGDTA) +
- MSGTYPE(*ESCAPE)
- GOTO CMDLBL(PGMMSG)
- ENDDO /* MSGID CPD7A07 */
-
- /* SPECIAL MESSAGE FOR MEMBER NOT FOUND */
-
- IF COND(%SST(&MSGDTA 9 7) *EQ 'CPD7A53') THEN(DO)
- CHGVAR VAR(&MSGDTA) VALUE(' ')
- CHGVAR VAR(&MSGDTA) VALUE(&FROMLIB)
- CHGVAR VAR(%SST(&MSGDTA 33 10)) VALUE(&FROMFILE)
- CHGVAR VAR(%SST(&MSGDTA 43 10)) VALUE(&FROMMBR)
- SNDPGMMSG MSGID(CPD7A53) MSGF(QCPFMSG) MSGDTA(&MSGDTA) +
- MSGTYPE(*ESCAPE)
- GOTO CMDLBL(PGMMSG)
- ENDDO /* MSGID CPD7A07 */
- ENDDO /* MSGID CPD7A07 */
-
- IF COND(&RMTUSERID *EQ 'QUSER ' *AND +
- &SCDTIME *NE '*CALLBACK') THEN(DO)
- CHGVAR VAR(&CMDMSG) VALUE('CALL LINK400R PARM(' +
- *CAT &APOST *CAT &MSGID *CAT &APOST *BCAT +
- &APOST *CAT &MSGFLIB *CAT &APOST *BCAT +
- &APOST *CAT &MSGF *CAT &APOST *BCAT +
- &APOST *CAT &MSGDTA *CAT &APOST *CAT ')')
- SBMRMTCMD CMD(&CMDMSG) DDMFILE(QTEMP/RMTCMD)
- MONMSG MSGID(CPF0000)
- ENDDO
- SNDPGMMSG MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) +
- MSGDTA(&MSGDTA) MSGTYPE(*INFO)
- GOTO CMDLBL(PGMMSG)
- GOTO CMDLBL(ENDPROGRAM)
-
- ERROR:
- /*** Standard error handling routine ***/
- IF &ERRORSW THEN(SNDPGMMSG MSGID(CPF9999) +
- MSGF(QCPFMSG) MSGTYPE(*ESCAPE))
- CHGVAR &ERRORSW '1'
- ERRDIAG: RCVMSG MSGTYPE(*DIAG) MSGDTA(&MSGDTA) MSGID(&MSGID) +
- MSGF(&MSGF) MSGFLIB(&MSGFLIB)
- IF (&MSGID *EQ ' ') GOTO ESCAPE
- IF COND(&RMTUSERID *EQ 'QUSER ') THEN(DO)
- SBMRMTCMD CMD('CALL PGM(LINK400R) PARM(&MSGID +
- &MSGFLIB &MSGF &MSGDTA)') +
- DDMFILE(QTEMP/RMTCMD)
- ENDDO
- SNDPGMMSG MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) +
- MSGDTA(&MSGDTA) MSGTYPE(*DIAG)
- GOTO ERRDIAG
- ESCAPE: RCVMSG MSGTYPE(*EXCP) MSGDTA(&MSGDTA) MSGID(&MSGID) +
- MSGF(&MSGF) MSGFLIB(&MSGFLIB)
- IF COND(&RMTUSERID *EQ 'QUSER ') THEN(DO)
- SBMRMTCMD CMD('CALL PGM(LINK400R) PARM(&MSGID +
- &MSGFLIB &MSGF &MSGDTA)') +
- DDMFILE(QTEMP/RMTCMD)
- ENDDO
- SNDPGMMSG MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) +
- MSGDTA(&MSGDTA) MSGTYPE(*ESCAPE)
- GOTO CMDLBL(ENDPROGRAM)
-
- GENERIC:
- CHGVAR VAR(&FROMGEN) VALUE(&FROMMBR)
- RTVMBRD FILE(&FROMLIB/&FROMFILE) MBR(&FROMGEN *SAME) +
- RTNMBR(&RTNMBR)
- GENERIC1: IF COND(%SST(&RTNMBR 1 &RESULT) *EQ +
- %SST(&FROMMBR 1 &RESULT)) THEN(DO)
- SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) +
- MSGDTA('Transmitting ' *CAT &FROMLIB *TCAT +
- '/' *TCAT &FROMFILE *TCAT '/' *TCAT +
- &RTNMBR) TOPGMQ(*EXT) MSGTYPE(*STATUS)
-
- /* IF SUBMIT, CAN'T USE HANG-UP *YES FOR GENERIC */
-
- IF COND(&SBMJOB *EQ '*YES') THEN(DO)
- SBMJOB CMD(CALL PGM(LINK400S) PARM(&OPTION &FROMLIB +
- &FROMFILE &RTNMBR &TYPE &TOLIB &TOFILE +
- &RTNMBR &TODATE &REPLACE &RMTLOCNAME +
- &PASSWORD &RCODE &MSGNUM '*NO ')) +
- JOB(&RTNMBR) JOBPTY(8)
- SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) +
- MSGDTA('Transfer' *BCAT &FROMLIB *TCAT +
- '/' *CAT &FROMFILE *TCAT '/' *CAT +
- &RTNMBR *TCAT ' Submitted') MSGTYPE(*COMP)
- ENDDO
- IF COND(&SBMJOB *NE '*YES') THEN(DO)
- CALL PGM(QY2FTML) PARM(&OPTION &FROMLIB &FROMFILE +
- &RTNMBR &TYPE &TOLIB &TOFILE &RTNMBR +
- &TODATE &REPLACE &RMTLOCNAME &PASSWORD +
- &RCODE &MSGNUM)
- ENDDO
- CHGVAR VAR(&FROMGEN) VALUE(&RTNMBR)
- RTVMBRD FILE(&FROMLIB/&FROMFILE) MBR(&FROMGEN *NEXT) +
- RTNMBR(&RTNMBR)
- MONMSG MSGID(CPF3049) EXEC(GOTO CMDLBL(DONGENERIC))
- GOTO CMDLBL(GENERIC1)
- ENDDO
- DONGENERIC: IF COND(&SBMJOB *EQ '*YES' *AND &HANGUP *EQ +
- '*YES') THEN(DO)
- SBMJOB CMD(CALL PGM(LINK400S) PARM(' ' ' ' +
- ' ' ' ' ' ' ' ' ' ' +
- ' ' ' ' ' ' &RMTLOCNAME +
- ' ' ' ' ' ' '*YES')) +
- JOB(HANGUP) JOBPTY(8)
- ENDDO
- GOTO CMDLBL(RTNGENERIC)
- ENDPROGRAM:
- ENDPGM
-
-
|
|