/* This file is part of FTP Client for IBM i. *//* *//* Copyright (c) 2017 Chris Hird *//* All rights reserved. *//* *//* Redistribution and use in source and binary forms, with or without *//* modification, are permitted provided that the following conditions *//* are met: *//* 1. Redistributions of source code must retain the above copyright *//* notice, this list of conditions and the following disclaimer. *//* 2. Redistributions in binary form must reproduce the above copyright *//* notice, this list of conditions and the following disclaimer in the *//* documentation and/or other materials provided with the distribution. *//* *//* *//* Disclaimer : *//* FTP Client for IBM i is distributed in the hope that it will be useful, *//* but WITHOUT ANY WARRANTY; without even the implied warranty of *//* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. */ PGM PARM(&INSTLIB &SRCLIB &TGTRLS &DIR) DCL VAR(&INSTLIB) TYPE(*CHAR) LEN(10) DCL VAR(&SRCLIB) TYPE(*CHAR) LEN(10) DCL VAR(&TGTRLS) TYPE(*CHAR) LEN(8) DCL VAR(&DIR) TYPE(*CHAR) LEN(255) DCL VAR(&STMFPATH) TYPE(*CHAR) LEN(275) DCL VAR(&SRCMBR) TYPE(*CHAR) LEN(128) /* create the source library for holding the binding directory and modules */ SNDMSG MSG(&DIR) TOUSR(*REQUESTER) ADDLIBLE LIB(&SRCLIB) MONMSG MSGID(CPF2103) CLRLIB LIB(&INSTLIB) MONMSG MSGID(CPF2103) /* Create the Print file */ CRTPRTF FILE(&INSTLIB/FTPPRTF) DEV(*JOB) DEVTYPE(*SCS) /* create the JOBD */ CRTJOBD JOBD(&INSTLIB/FTPUSRJOBD) INLLIBL(&INSTLIB) /* create the message queue */ CRTMSGQ MSGQ(&INSTLIB/FTPCMSGQ) /* create the message file */ CRTMSGF MSGF(&INSTLIB/FTPCMSGF) /* create the message ID's */ ADDMSGD MSGID(API0001) MSGF(&INSTLIB/FTPCMSGF) MSG('Error occured during running of API &1.') SECLVL('An + Error occured during the running of API &1 which has caused the process to stop. Determine + the reason for the failure and retry. Contact support for further information.') SEV(30) + FMT((*CHAR 10) ) ADDMSGD MSGID(CRT0001) MSGF(&INSTLIB/FTPCMSGF) MSG('Error occured while trying to set autoextend + parameter of USRSPC &1 in Library &2.') SECLVL('The program tried to set the autoextend + attribute for USRSPC &1 in Library &2 which failed. Determine the reason for the + failure and retry. Contact support for further information.') SEV(30) FMT((*CHAR + 10) (*CHAR 10) ) ADDMSGD MSGID(CRT0002) MSGF(&INSTLIB/FTPCMSGF) MSG('Error occured while trying to create a USRSPC &1 in + Library &2.') SECLVL('The program tried to create a USRSPC &1 in Library &2 which failed. + Determine the reason for the failure and retry. Contact support for further information.') + SEV(30) FMT((*CHAR 10) (*CHAR 10) ) ADDMSGD MSGID(CWD0001) MSGF(&INSTLIB/FTPCMSGF) MSG('Cannot proceed beyond the Root directory ''/'' + request ignored.') SECLVL('You cannot progrees beyond the root directory of the file system. + The request has been ignored.') SEV(0) ADDMSGD MSGID(CWD0002) MSGF(&INSTLIB/FTPCMSGF) MSG('Cannot edit a Directory Object') SECLVL('You cannot + edit the object selected.') SEV(0) ADDMSGD MSGID(CWD0003) MSGF(&INSTLIB/FTPCMSGF) MSG('Unable to extract the current working + directory.') SECLVL('*NONE') SEV(0) ADDMSGD MSGID(CWD0004) MSGF(&INSTLIB/FTPCMSGF) MSG('Cannot delete this type of object.') SECLVL('FTP + Manager will not allow the deletion of this type of list entry. It is not a physical object + but a link to the previous directory.') SEV(0) ADDMSGD MSGID(CWD0005) MSGF(&INSTLIB/FTPCMSGF) MSG('Unable to delete the object.') SECLVL('FTP is + unable to delete this object type.') SEV(0) ADDMSGD MSGID(CWD0006) MSGF(&INSTLIB/FTPCMSGF) MSG('Unable to get the information on the object + selected') SECLVL('*NONE') SEV(0) ADDMSGD MSGID(CWD0007) MSGF(&INSTLIB/FTPCMSGF) MSG('The selected object is not a directory.') + SECLVL('You cannot change directory to the selected object. The object is not a + directory object.') SEV(30) ADDMSGD MSGID(CWD0008) MSGF(&INSTLIB/FTPCMSGF) MSG('Path exceeds maximum allowed.') SECLVL('The path is + greater than that supported by the product. A maximum of 254 characters is allowed for a path + name.') SEV(0) ADDMSGD MSGID(ERR0001) MSGF(&INSTLIB/FTPCMSGF) MSG('Error found while writing data to the IFS.') + SECLVL('An Error was reported by the program while writing the Stream Files. Check the + joblog for further messages and correct before running the command again.') SEV(40) ADDMSGD MSGID(ERR0003) MSGF(&INSTLIB/FTPCMSGF) MSG('Unable to perform requested option') SECLVL('*NONE') + SEV(30) ADDMSGD MSGID(ERR0005) MSGF(&INSTLIB/FTPCMSGF) MSG('Incorrect value entered.') SECLVL('Check the + help text for the range of values.') SEV(10) ADDMSGD MSGID(FTP9901) MSGF(&INSTLIB/FTPCMSGF) MSG('Error in the Default Settings, cannot load the + profiles selected.') SECLVL('The Default settings are invalid. The Directory &1 does not exist + inthe IFS. Correct the default settings and try the request again.') SEV(30) FMT((*CHAR 79) ) ADDMSGD MSGID(FTP9902) MSGF(&INSTLIB/FTPCMSGF) MSG('The directory &1 does not exist on the IFS. + User not added') SECLVL('The directory &1 does not exist onthe IFS. Change the entry to + reflect the correct path. The path should be an absolute path name with a leading + ''/''.') SEV(30) FMT((*CHAR 79) ) ADDMSGD MSGID(F000001) MSGF(&INSTLIB/FTPCMSGF) MSG('Unable to open File &1. Contact support.') + SECLVL('The program could not open the file and has stopped processing. Contact support to + resolve this problem before trying the command again.') SEV(40) FMT((*CHAR 10) ) ADDMSGD MSGID(F000002) MSGF(&INSTLIB/FTPCMSGF) MSG('No records exist in File &1.') SECLVL('No + records are available to process in the file. This may be an error with the file or no + data is available to process.') SEV(40) FMT((*CHAR 10) ) ADDMSGD MSGID(F000003) MSGF(&INSTLIB/FTPCMSGF) MSG('No Configuration Data is Available in File &1') + SECLVL('No configuration data is available in the configuration file. This data has to be + updated before you can continue with the process. Contact support for details of the data + required.') SEV(40) FMT((*CHAR 10) ) ADDMSGD MSGID(F000008) MSGF(&INSTLIB/FTPCMSGF) MSG('Error updating record in file &1.') SECLVL('An + Error occured while trying to update and entry in file &1. Determine the reason for the + failure and retry. Contact support for further information.') SEV(30) FMT((*CHAR + 10) ) ADDMSGD MSGID(F000009) MSGF(&INSTLIB/FTPCMSGF) MSG('Error adding record to file &1.') SECLVL('An Error + occured while trying to add a record in file &1. Determine the reason for the failure and + retry. Contact support for further information.') SEV(30) FMT((*CHAR 10) ) ADDMSGD MSGID(F000010) MSGF(&INSTLIB/FTPCMSGF) MSG('Unable to read from file &1. RRN &2 + incorrect.') SECLVL('An attempt was made to read the file &1 using the RRN &2 which + ended in error. Contact support for further assistance.') SEV(30) FMT((*CHAR 10) + (*CHAR 10) ) ADDMSGD MSGID(GEN0001) MSGF(&INSTLIB/FTPCMSGF) MSG('&1') SECLVL('No further Help defined') SEV(40) + FMT((*CHAR 512) ) ADDMSGD MSGID(GEN0002) MSGF(&INSTLIB/FTPCMSGF) MSG('parameter passed &1') SECLVL('*NONE') SEV(0) + FMT((*CHAR 2) ) ADDMSGD MSGID(IP00001) MSGF(&INSTLIB/FTPCMSGF) MSG('The address length must be greater than 7 + characters.') SECLVL('Enter a valid IP address') SEV(30) ADDMSGD MSGID(IP00002) MSGF(&INSTLIB/FTPCMSGF) MSG('The IP address entered "*" can only be entered + once.') SECLVL('You have tried to enter the address * but it is already contained in the + other precessing scheme. If this is the reject processing scheme either remove it from + the accept processing scheme and re-enter here or vice versa.') SEV(30) ADDMSGD MSGID(IP00003) MSGF(&INSTLIB/FTPCMSGF) MSG('The address format is incorrect. Request to add IP + Address &1 rejected.') SECLVL('The format of a subnet mask is ''.*'' the address entered does + not follow this format. If this is the first part of the IP Address it must be an ''*'' not + ''.*''. Please renter the correct format and try your request again.') SEV(30) FMT((*CHAR 15) ) ADDMSGD MSGID(LIC0010) MSGF(&INSTLIB/FTPCMSGF) MSG('FTP Client Trial already installed previously. + New Key Required &1.') SECLVL('You have already installed the FTP Client previously and + used the 30 day trial period key. If you do not have a key please contact Shield + Advanced Solutions for a new key.') SEV(0) FMT((*CHAR 7) ) ADDMSGD MSGID(LIC0011) MSGF(&INSTLIB/FTPCMSGF) MSG('30 Day trial key for product &1 sucessfully + installed. 5 concurrent users allowed') SECLVL('You have sucessfully installed the 30 Day + trial key, this will allow the product to work for a period of 30 days from today. After this + time the product will fail to function. You may have upto 5 active users active at any one + time.') SEV(0) FMT((*CHAR 7) ) ADDMSGD MSGID(LST0001) MSGF(&INSTLIB/FTPCMSGF) MSG('No List entries for this directory.') + SECLVL('*NONE') SEV(0) ADDMSGD MSGID(MOD0001) MSGF(&INSTLIB/FTPCMSGF) MSG('Transfer Mode must be BINARY for a Save File + Transfer.') SECLVL('You need to set the transfer mode to BINARY when transfering save Files. + It has been set to BINARY for you for the duration of this transfer') SEV(30) ADDMSGD MSGID(MSG0002) MSGF(&INSTLIB/FTPCMSGF) MSG('FTP Client for IBM i') SECLVL('*NONE') SEV(0) ADDMSGD MSGID(PWD0001) MSGF(&INSTLIB/FTPCMSGF) MSG('Password not accepted') SECLVL('The password was + rejected by the remote system.') SEV(0) ADDMSGD MSGID(SEC0000) MSGF(&INSTLIB/FTPCMSGF) MSG('Not Licensed to run FTP Client.') SECLVL('You + have attempted to use the FTP Client before installing the security code. Please + install the security code before continuing.') SEV(40) ADDMSGD MSGID(SEC0001) MSGF(&INSTLIB/FTPCMSGF) MSG('Updates not allowed. You have to be signed on as + QSECOFR to update the configurations') SECLVL('The Configuration files can only be updated by + QSECOFR. Sign on as QSECOFR to carry out these tasks.') SEV(40) ADDMSGD MSGID(SEC0002) MSGF(&INSTLIB/FTPCMSGF) MSG('FTP Client attempted to perform a &1 but the + request was rejected.') SECLVL('FTP Client uses the security settings within FTP + Security Manager. Your request was checked and was rejected by the software. You will + need to have your profile added to the FTP Client Profiles within FTP Security Manager + before you retry the request.') SEV(40) FMT((*CHAR 25) ) ADDMSGD MSGID(SF00001) MSGF(&INSTLIB/FTPCMSGF) MSG('Unable to open File &1') SECLVL('Cannot open the + stream file &1. Contact support.') SEV(40) FMT((*CHAR 50) ) ADDMSGD MSGID(SF00002) MSGF(&INSTLIB/FTPCMSGF) MSG('Unable to open the Stream file &1') + SECLVL('Unable to open the stream file &1 for updating with the map info. Contact + support') SEV(40) FMT((*CHAR 50) ) ADDMSGD MSGID(SF00003) MSGF(&INSTLIB/FTPCMSGF) MSG('Error reading from file &1;') SECLVL('The Program + encountered a problem reading from the stream file, Contact support.') SEV(40) FMT((*CHAR 50) ) ADDMSGD MSGID(SF00004) MSGF(&INSTLIB/FTPCMSGF) MSG('Error writing to stream file &1') SECLVL('The + program encountered a problem writing to the stream file. Contact support.') SEV(40) + FMT((*CHAR 50) ) ADDMSGD MSGID(SF00005) MSGF(&INSTLIB/FTPCMSGF) MSG('Unable to extract file details for File &1.') + SECLVL('The program could not extract the file details for File &1. Contact support') SEV(40) + FMT((*CHAR 50) ) ADDMSGD MSGID(SF00006) MSGF(&INSTLIB/FTPCMSGF) MSG('Unable to create the directory &1') SECLVL('An + attempt to create the directory &1 failed due to errors, check the job log for further + information and contact support.') SEV(40) FMT((*CHAR 50) ) ADDMSGD MSGID(SF00007) MSGF(&INSTLIB/FTPCMSGF) MSG('Unable to make directory &1 the current directory.') + SECLVL('An attempt was made to make directory &1 the current directory, this has caused the + program to fail, before you restart the program check the joblog and message files to + determine the reason for the failure, correct the problems and restart the program.') SEV(40) + FMT((*CHAR 50) ) ADDMSGD MSGID(SF00008) MSGF(&INSTLIB/FTPCMSGF) MSG('Unable to create file &1') SECLVL('An attempt + was made to create &1 File in the IFS. Check the joblog and messages for the reason + why, correct and run the program again.') SEV(40) FMT((*CHAR 50) ) ADDMSGD MSGID(SF00009) MSGF(&INSTLIB/FTPCMSGF) MSG('File &1 already exists.') SECLVL('File &1 already + exists. The file will be cleared and the new data written as part of the update process. This + is not necessarily and error but should be checked for clarity.') SEV(10) FMT((*CHAR 50) ) ADDMSGD MSGID(SF00011) MSGF(&INSTLIB/FTPCMSGF) MSG('Incorrect File Type,File &1 Library &2 + Attribute &3') SECLVL('The File entered is not a Save File!') SEV(0) FMT((*CHAR 10) + (*CHAR 10) (*CHAR 10) ) ADDMSGD MSGID(SF00013) MSGF(&INSTLIB/FTPCMSGF) MSG('Unable to create Save File &1.') SECLVL('The program + was unable to create the save file &1 due to errors, correct the errors and try again!') + SEV(40) FMT((*CHAR 21) ) ADDMSGD MSGID(SPC0001) MSGF(&INSTLIB/FTPCMSGF) MSG('Unable to add the Handle Data to USRSPC &1 in + library &2.') SECLVL('The program failed to add the data to the USRSPC &1 in Library &2. + Check the joblog for any errors, correct the errors and try the request again') SEV(30) + FMT((*CHAR 10) (*CHAR 10) ) ADDMSGD MSGID(STS0001) MSGF(&INSTLIB/FTPCMSGF) MSG('The selected entry is not a directory. Request + ignored.') SECLVL('You can only change directory to a directory entry.') SEV(30) ADDMSGD MSGID(USR0301) MSGF(&INSTLIB/FTPCMSGF) MSG('Entry must be Y or N') SECLVL('The valid values + for this field are Y,N. re-enter with the correct value.') SEV(30) ADDMSGD MSGID(USR0302) MSGF(&INSTLIB/FTPCMSGF) MSG('Invalid entry, enter *LIB or *PATH.') SECLVL('The + valid values for this parameter are *LIB,*PATH. please enter the correct value.') SEV(30) ADDMSGD MSGID(USR0303) MSGF(&INSTLIB/FTPCMSGF) MSG('The entry must be ''Y'', ''N'',''P''.') + SECLVL('Enter the correct value.') SEV(40) ADDMSGD MSGID(USR0304) MSGF(&INSTLIB/FTPCMSGF) MSG('Invalid Entry, use either *UNIX or *DFT') + SECLVL('Enter *UNIX or *DFT') SEV(40) /* DDS,CL,CMD,menus and panel groups cannot use IFS source so need to copy back to source files */ CRTSRCPF FILE(&SRCLIB/QUIMSRC) RCDLEN(150) CRTSRCPF FILE(&SRCLIB/QDDSSRC) RCDLEN(150) CRTSRCPF FILE(&SRCLIB/H) RCDLEN(150) CRTSRCPF FILE(&SRCLIB/QCSRC) RCDLEN(150) /* Create the binding directory */ DLTBNDDIR BNDDIR(&SRCLIB/FTPCLNT) MONMSG MSGID(CPF2105) CRTBNDDIR BNDDIR(&SRCLIB/FTPCLNT) ADDBNDDIRE BNDDIR(&SRCLIB/FTPCLNT) OBJ((&SRCLIB/MSGFUNC *MODULE) (&SRCLIB/AES *MODULE) (&SRCLIB/A_E_CCSID + *MODULE) (&SRCLIB/FTPCON *MODULE) (&SRCLIB/FTPCFUNCS *MODULE)) /* copy the file source */ CHGVAR VAR(&STMFPATH) VALUE(&DIR *TCAT '/qddssrc/ftpcfg.pf') ADDPFM FILE(&SRCLIB/QDDSSRC) MBR(FTPCFG) SRCTYPE(PF) CHGVAR VAR(&SRCMBR) VALUE('/QSYS.LIB/' *TCAT &SRCLIB *TCAT '.LIB/QDDSSRC.FILE/FTPCFG.MBR') CPYFRMSTMF FROMSTMF(&STMFPATH) TOMBR(&SRCMBR) MBROPT(*REPLACE) CHGVAR VAR(&STMFPATH) VALUE(&DIR *TCAT '/qddssrc/ftpsite.pf') ADDPFM FILE(&SRCLIB/QDDSSRC) MBR(FTPSITE) SRCTYPE(PF) CHGVAR VAR(&SRCMBR) VALUE('/QSYS.LIB/' *TCAT &SRCLIB *TCAT '.LIB/QDDSSRC.FILE/FTPSITE.MBR') CPYFRMSTMF FROMSTMF(&STMFPATH) TOMBR(&SRCMBR) MBROPT(*REPLACE) /* create the Physical Files */ CRTPF FILE(&INSTLIB/FTPCFG) SRCFILE(&SRCLIB/QDDSSRC) CRTPF FILE(&SRCLIB/FTPCFG) SRCFILE(&SRCLIB/QDDSSRC) CHGPF FILE(&INSTLIB/FTPCFG) SIZE(1 0 0) CRTPF FILE(&INSTLIB/FTPSITE) SRCFILE(&SRCLIB/QDDSSRC) CRTPF FILE(&SRCLIB/FTPSITE) SRCFILE(&SRCLIB/QDDSSRC) /* copy the header file source */ CHGVAR VAR(&STMFPATH) VALUE(&DIR *TCAT '/h/common.h') ADDPFM FILE(&SRCLIB/H) MBR(COMMON) SRCTYPE(C) CHGVAR VAR(&SRCMBR) VALUE('/QSYS.LIB/' *TCAT &SRCLIB *TCAT '.LIB/H.FILE/COMMON.MBR') CPYFRMSTMF FROMSTMF(&STMFPATH) TOMBR(&SRCMBR) MBROPT(*REPLACE) CHGVAR VAR(&STMFPATH) VALUE(&DIR *TCAT '/h/a_e_ccsid.h') ADDPFM FILE(&SRCLIB/H) MBR(A_E_CCSID) SRCTYPE(C) CHGVAR VAR(&SRCMBR) VALUE('/QSYS.LIB/' *TCAT &SRCLIB *TCAT '.LIB/H.FILE/A_E_CCSID.MBR') CPYFRMSTMF FROMSTMF(&STMFPATH) TOMBR(&SRCMBR) MBROPT(*REPLACE) CHGVAR VAR(&STMFPATH) VALUE(&DIR *TCAT '/h/ftpcfuncs.h') ADDPFM FILE(&SRCLIB/H) MBR(FTPCFUNCS) SRCTYPE(C) CHGVAR VAR(&SRCMBR) VALUE('/QSYS.LIB/' *TCAT &SRCLIB *TCAT '.LIB/H.FILE/FTPCFUNCS.MBR') CPYFRMSTMF FROMSTMF(&STMFPATH) TOMBR(&SRCMBR) MBROPT(*REPLACE) CHGVAR VAR(&STMFPATH) VALUE(&DIR *TCAT '/h/ftpcon.h') ADDPFM FILE(&SRCLIB/H) MBR(FTPCON) SRCTYPE(C) CHGVAR VAR(&SRCMBR) VALUE('/QSYS.LIB/' *TCAT &SRCLIB *TCAT '.LIB/H.FILE/FTPCON.MBR') CPYFRMSTMF FROMSTMF(&STMFPATH) TOMBR(&SRCMBR) MBROPT(*REPLACE) CHGVAR VAR(&STMFPATH) VALUE(&DIR *TCAT '/h/msgfunc.h') ADDPFM FILE(&SRCLIB/H) MBR(MSGFUNC) SRCTYPE(C) CHGVAR VAR(&SRCMBR) VALUE('/QSYS.LIB/' *TCAT &SRCLIB *TCAT '.LIB/H.FILE/MSGFUNC.MBR') CPYFRMSTMF FROMSTMF(&STMFPATH) TOMBR(&SRCMBR) MBROPT(*REPLACE) CHGVAR VAR(&STMFPATH) VALUE(&DIR *TCAT '/h/uimopt.h') ADDPFM FILE(&SRCLIB/H) MBR(UIMOPT) SRCTYPE(C) CHGVAR VAR(&SRCMBR) VALUE('/QSYS.LIB/' *TCAT &SRCLIB *TCAT '.LIB/H.FILE/UIMOPT.MBR') CPYFRMSTMF FROMSTMF(&STMFPATH) TOMBR(&SRCMBR) MBROPT(*REPLACE) /* copy the c source to the files */ CHGVAR VAR(&STMFPATH) VALUE(&DIR *TCAT '/qcsrc/a_e_ccsid.c') ADDPFM FILE(&SRCLIB/QCSRC) MBR(A_E_CCSID) SRCTYPE(C) CHGVAR VAR(&SRCMBR) VALUE('/QSYS.LIB/' *TCAT &SRCLIB *TCAT '.LIB/QCSRC.FILE/A_E_CCSID.MBR') CPYFRMSTMF FROMSTMF(&STMFPATH) TOMBR(&SRCMBR) MBROPT(*REPLACE) CHGVAR VAR(&STMFPATH) VALUE(&DIR *TCAT '/qcsrc/aes.c') ADDPFM FILE(&SRCLIB/QCSRC) MBR(AES) SRCTYPE(C) CHGVAR VAR(&SRCMBR) VALUE('/QSYS.LIB/' *TCAT &SRCLIB *TCAT '.LIB/QCSRC.FILE/AES.MBR') CPYFRMSTMF FROMSTMF(&STMFPATH) TOMBR(&SRCMBR) MBROPT(*REPLACE) CHGVAR VAR(&STMFPATH) VALUE(&DIR *TCAT '/qcsrc/ftp11p.c') ADDPFM FILE(&SRCLIB/QCSRC) MBR(FTP11P) SRCTYPE(C) CHGVAR VAR(&SRCMBR) VALUE('/QSYS.LIB/' *TCAT &SRCLIB *TCAT '.LIB/QCSRC.FILE/FTP11P.MBR') CPYFRMSTMF FROMSTMF(&STMFPATH) TOMBR(&SRCMBR) MBROPT(*REPLACE) CHGVAR VAR(&STMFPATH) VALUE(&DIR *TCAT '/qcsrc/ftp801p.c') ADDPFM FILE(&SRCLIB/QCSRC) MBR(FTP801P) SRCTYPE(C) CHGVAR VAR(&SRCMBR) VALUE('/QSYS.LIB/' *TCAT &SRCLIB *TCAT '.LIB/QCSRC.FILE/FTP801P.MBR') CPYFRMSTMF FROMSTMF(&STMFPATH) TOMBR(&SRCMBR) MBROPT(*REPLACE) CHGVAR VAR(&STMFPATH) VALUE(&DIR *TCAT '/qcsrc/ftpcfuncs.c') ADDPFM FILE(&SRCLIB/QCSRC) MBR(FTPCFUNCS) SRCTYPE(C) CHGVAR VAR(&SRCMBR) VALUE('/QSYS.LIB/' *TCAT &SRCLIB *TCAT '.LIB/QCSRC.FILE/FTPCFUNCS.MBR') CPYFRMSTMF FROMSTMF(&STMFPATH) TOMBR(&SRCMBR) MBROPT(*REPLACE) CHGVAR VAR(&STMFPATH) VALUE(&DIR *TCAT '/qcsrc/ftpcon.c') ADDPFM FILE(&SRCLIB/QCSRC) MBR(FTPCON) SRCTYPE(C) CHGVAR VAR(&SRCMBR) VALUE('/QSYS.LIB/' *TCAT &SRCLIB *TCAT '.LIB/QCSRC.FILE/FTPCON.MBR') CPYFRMSTMF FROMSTMF(&STMFPATH) TOMBR(&SRCMBR) MBROPT(*REPLACE) CHGVAR VAR(&STMFPATH) VALUE(&DIR *TCAT '/qcsrc/msgfunc.c') ADDPFM FILE(&SRCLIB/QCSRC) MBR(MSGFUNC) SRCTYPE(C) CHGVAR VAR(&SRCMBR) VALUE('/QSYS.LIB/' *TCAT &SRCLIB *TCAT '.LIB/QCSRC.FILE/MSGFUNC.MBR') CPYFRMSTMF FROMSTMF(&STMFPATH) TOMBR(&SRCMBR) MBROPT(*REPLACE) /* create the modules from Source */ CRTCMOD MODULE(&SRCLIB/AES) SRCFILE(&SRCLIB/QCSRC) TEXT(*NONE) OUTPUT(*PRINT) TGTRLS(&TGTRLS) CRTCMOD MODULE(&SRCLIB/A_E_CCSID) SRCFILE(&SRCLIB/QCSRC) TEXT(*NONE) OUTPUT(*PRINT) TGTRLS(&TGTRLS) CRTCMOD MODULE(&SRCLIB/FTPCON) SRCFILE(&SRCLIB/QCSRC) TEXT(*NONE) OUTPUT(*PRINT) TGTRLS(&TGTRLS) CRTCMOD MODULE(&SRCLIB/FTPCFUNCS) SRCFILE(&SRCLIB/QCSRC) TEXT(*NONE) OUTPUT(*PRINT) TGTRLS(&TGTRLS) CRTCMOD MODULE(&SRCLIB/FTP11P) SRCFILE(&SRCLIB/QCSRC) TEXT(*NONE) OUTPUT(*PRINT) TGTRLS(&TGTRLS) CRTCMOD MODULE(&SRCLIB/FTP801P) SRCFILE(&SRCLIB/QCSRC) TEXT(*NONE) OUTPUT(*PRINT) TGTRLS(&TGTRLS) CRTCMOD MODULE(&SRCLIB/MSGFUNC) SRCFILE(&SRCLIB/QCSRC) TEXT(*NONE) OUTPUT(*PRINT) TGTRLS(&TGTRLS) /* create the programs */ CRTPGM PGM(&INSTLIB/FTP11P) MODULE(&SRCLIB/FTP11P) TEXT('') BNDDIR(&SRCLIB/FTPCLNT) TGTRLS(&TGTRLS) CRTPGM PGM(&INSTLIB/FTP801P) MODULE(&SRCLIB/FTP801P) TEXT('') BNDDIR(&SRCLIB/FTPCLNT) ACTGRP(*CALLER) + TGTRLS(&TGTRLS) /* copy the menu source */ CHGVAR VAR(&STMFPATH) VALUE(&DIR *TCAT '/quimsrc/ftpcmain.menu') ADDPFM FILE(&SRCLIB/QUIMSRC) MBR(FTPCMAIN) SRCTYPE(MENU) CHGVAR VAR(&SRCMBR) VALUE('/QSYS.LIB/' *TCAT &SRCLIB *TCAT '.LIB/QUIMSRC.FILE/FTPCMAIN.MBR') CPYFRMSTMF FROMSTMF(&STMFPATH) TOMBR(&SRCMBR) MBROPT(*REPLACE) /* create the menus */ CRTMNU MENU(&INSTLIB/FTPCMAIN) TYPE(*UIM) SRCFILE(&SRCLIB/QUIMSRC) CURLIB(&INSTLIB) /* copy the panel group source */ CHGVAR VAR(&STMFPATH) VALUE(&DIR *TCAT '/quimsrc/ftp801pg.pnlgrp') ADDPFM FILE(&SRCLIB/QUIMSRC) MBR(FTP801PG) SRCTYPE(PNLGRP) CHGVAR VAR(&SRCMBR) VALUE('/QSYS.LIB/' *TCAT &SRCLIB *TCAT '.LIB/QUIMSRC.FILE/FTP801PG.MBR') CPYFRMSTMF FROMSTMF(&STMFPATH) TOMBR(&SRCMBR) MBROPT(*REPLACE) CHGVAR VAR(&STMFPATH) VALUE(&DIR *TCAT '/quimsrc/ftp11pg.pnlgrp') ADDPFM FILE(&SRCLIB/QUIMSRC) MBR(FTP11PG) SRCTYPE(PNLGRP) CHGVAR VAR(&SRCMBR) VALUE('/QSYS.LIB/' *TCAT &SRCLIB *TCAT '.LIB/QUIMSRC.FILE/FTP11PG.MBR') CPYFRMSTMF FROMSTMF(&STMFPATH) TOMBR(&SRCMBR) MBROPT(*REPLACE) CHGVAR VAR(&STMFPATH) VALUE(&DIR *TCAT '/quimsrc/ftphlp.pnlgrp') ADDPFM FILE(&SRCLIB/QUIMSRC) MBR(FTPHLP) SRCTYPE(PNLGRP) CHGVAR VAR(&SRCMBR) VALUE('/QSYS.LIB/' *TCAT &SRCLIB *TCAT '.LIB/QUIMSRC.FILE/FTPHLP.MBR') CPYFRMSTMF FROMSTMF(&STMFPATH) TOMBR(&SRCMBR) MBROPT(*REPLACE) /* create the panel groups */ CRTPNLGRP PNLGRP(&INSTLIB/FTPHLP) SRCFILE(&SRCLIB/QUIMSRC) CRTPNLGRP PNLGRP(&INSTLIB/FTP11PG) SRCFILE(&SRCLIB/QUIMSRC) CRTPNLGRP PNLGRP(&INSTLIB/FTP801PG) SRCFILE(&SRCLIB/QUIMSRC) /* copy the command source */ CHGVAR VAR(&STMFPATH) VALUE(&DIR *TCAT '/qcmdsrc/ftpclient.cmd') ADDPFM FILE(&SRCLIB/QCMDSRC) MBR(FTPCLIENT) SRCTYPE(CMD) CHGVAR VAR(&SRCMBR) VALUE('/QSYS.LIB/' *TCAT &SRCLIB *TCAT '.LIB/QCMDSRC.FILE/FTPCLIENT.MBR') CPYFRMSTMF FROMSTMF(&STMFPATH) TOMBR(&SRCMBR) MBROPT(*REPLACE) CRTCMD CMD(&INSTLIB/FTPCLIENT) PGM(&INSTLIB/FTP801P) SRCFILE(&SRCLIB/QCMDSRC) CURLIB(&INSTLIB) CHGVAR VAR(&STMFPATH) VALUE(&DIR *TCAT '/qcmdsrc/wrkftpccfg.cmd') ADDPFM FILE(&SRCLIB/QCMDSRC) MBR(WRKFTPCCFG) SRCTYPE(CMD) CHGVAR VAR(&SRCMBR) VALUE('/QSYS.LIB/' *TCAT &SRCLIB *TCAT '.LIB/QCMDSRC.FILE/WRKFTPCCFG.MBR') CPYFRMSTMF FROMSTMF(&STMFPATH) TOMBR(&SRCMBR) MBROPT(*REPLACE) CRTCMD CMD(&INSTLIB/WRKFTPCCFG) PGM(&INSTLIB/FTP11P) SRCFILE(&SRCLIB/QCMDSRC) CURLIB(&INSTLIB) /* remove library list */ RMVLIBLE LIB(&SRCLIB) ENDPGM