/*REXX*/ /* TRACE ?r */ /*--------------------------------------------------------------------------------------------- Purpose: SFP Macro to send current file to FTP server defined in list below FTPSEND C Invokes Browse window with command stream - FTP does not occur if Site not in list Difference between this and BTPSEND is that it does save the source prior to execution. Author: Mark McDonald mark@manmrk.net Date: 20050218 Recommend using a batch file when using with a stand-along REXX interpreter: REM----------------------------------------- REM Calls REXX to call BFTPSEND.SPF marco REM----------------------------------------- H:\U\PCDOS\REXX.EXE H:\U\SPFPC40\MACROS\FTPSEND.SPF %1 %2 Example: SPF/PC: TSO FTPSEND C:\SOURCEPATH\SOURCE.EXT SPFSE: DOS FTPSEND C:\SOURCEPATH\SOURCE.EXT or set up a user command such as: c:\batchpath\ftpsend.bat &ZDSN XE: CMD FTPSEND C:\SOURCEPATH\SOURCE.EXT ---------------------------------------------------------------------------------------------*/ /*--- Determine IF SPFPRO, SPFPC v4.x or Stand-alone REXX Interpreter ---*/ parse version name level date1 date2 date3 /*-- Determine which REXX interpreter is being used ---*/ TSPF = 0 /* Using a stand-alone REXX Interpreter */ IF date3 = 1995 THEN TSPF = 4 /* Using SPFPC v4 */ IF date3 = 1996 THEN TSPF = 5 /* Using SPFPRO */ IF date3 = 2007 THEN TSPF = 6 /* Using OOREXX */ /*--- This code is specific to SPFPC/SPFPRO - Delete if using OOREXX ---*/ IF (TSPF = 4 | TSPF = 5) THEN DO /*--- Get Passed Parms ---*/ 'ISREDIT MACRO(PARMS)' /*--- Retrieve Path/File Name of Source File ---*/ 'ISREDIT (FILENAME) = DATASET' /*C:\TEMP\FILE.EXE*/ /*--- If source has not been saved, save it ---*/ 'ISREDIT (MODIFIED) = DATA_CHANGED' IF (MODIFIED=YES) THEN 'ISREDIT SAVE' END /*--- Use for stand-alone REXX - DOSREXX OR OOREXX etc. ---*/ IF (TSPF = 0 | TSPF = 6) THEN DO PARSE ARG FILENAME END /*--- Set Passed Parms ---*/ PARMS = TRANSLATE(PARMS) /*--- Initialize Variables ---*/ FTPSITE = "" FPATH = "" FTPFILE = "" FTPU = "" XCNT = 0 T = 0 FTPLINE = "" /*--- Build FTP Site Specific Data: IPA userid password serverrootpath [4th parm is backup ip address]---*/ SITEDATA.WEBCONT = "192.000.0.00 userid password public_html" SITEDATA.WEBBLU = "192.000.0.00 userid password domains/webblu.org/public_html" SITEDATA.WEBRED = "192.000.0.00 userid password domains/webred.net/public_html" SITEDATA.1111 = "192.000.0.00 userid password domains/1111.org/public_html" /*--- Determine Which Site I am Working ON (Note it does not matter how many sub directories down they are) ---*/ IF POS("\WEBCONT",TRANSLATE(FILENAME),1) > 1 THEN FTPSITE = "WEBCONT" IF POS("\WEBBLU",TRANSLATE(FILENAME),1) > 1 THEN FTPSITE = "WEBLUE" IF POS("\1111",TRANSLATE(FILENAME),1) > 1 THEN FTPSITE = "1111" IF FTPSITE = "" THEN SIGNAL ERROREXIT /*--- Get File Path ---*/ FPATH = TRANSLATE(FILENAME," ","\") /*--- Make Temp File Names ---*/ FTPROOT = 'C:\TEMP\DRET' FTPFILE = FTPROOT'.DAT' FTPBAT = FTPROOT'.BAT' CALL TOSCMD TSPF, "ECHO S > "FTPFILE CALL TOSCMD TSPF, "ECHO S > "FTPBAT /*--- Build FTP Command File ---*/ T = LINEOUT(FTPFILE,WORD(SITEDATA.FTPSITE,2),1) /*--- User Name ---*/ T = LINEOUT(FTPFILE,WORD(SITEDATA.FTPSITE,3)) /*--- Password ---*/ T = LINEOUT(FTPFILE,'binary') /*--- Type is Binary ---*/ T = LINEOUT(FTPFILE,'bell') /*--- Ring the Bell ---*/ T = LINEOUT(FTPFILE,'cd 'WORD(SITEDATA.FTPSITE,4)) /*--- Get to Root Directory ---*/ /*--- If file is not in root directory, then build commands to get there ---*/ IF WORDS(FPATH) > 1 THEN DO XCNT = WORDPOS(FTPSITE,TRANSLATE(FPATH))+1 TO WORDS(FPATH)-1 T = LINEOUT(FTPFILE,'cd 'WORD(FPATH,XCNT)) END T = LINEOUT(FTPFILE,'put 'FILENAME) /*--- Send member to server ---*/ T = LINEOUT(FTPFILE,'quit') /*--- keep FTP Window Open to Show Status ---*/ T = LINEOUT(FTPFILE) /*--- Close FTP Command File ----*/ /*--- Build FTP Command Line ---*/ FTPLINE = "FTP -d -s:"FTPFILE" "WORD(SITEDATA.FTPSITE,1) /*--- Create FTP Batch File ---*/ T = LINEOUT(FTPBAT,FTPLINE,1) T = LINEOUT(FTPBAT,"COPY "FILENAME" Y"SUBSTR(FILENAME,2)) /*--- Copy to Backup Server My Drive Y---*/ T = LINEOUT(FTPBAT,'PAUSE') /*--- Build Mirror FTP Command Line ---*/ IF WORDS(SITEDATA.FTPSITE) > 4 THEN DO FTPLINE = "FTP -d -s:"FTPFILE" "WORD(SITEDATA.FTPSITE,5) /* --- Create Batch File ---*/ T = LINEOUT(FTPBAT,FTPLINE) T = LINEOUT(FTPBAT,'PAUSE') END /* --- Close Batch File ---*/ T = LINEOUT(FTPBAT) /*--- Debug Mode? - Works in SPFPC/SPFPRO only - Delete if using OOREXX ---*/ IF PARMS = "C" & (TSPF = 4 | TSPF = 5) THEN DO 'ISREDIT BROWSE 'FTPFILE exit 0 END /*--- Execute DOS FTP Batch Program ---*/ CALL TOSCMD TSPF, FTPBAT /*--- Display FTP Return Code in SPF Message Area (upper right of window) ---*/ IF (TSPF = 4 | TSP = 5) THEN DO ZEDSMSG = "FTP RC = "RC ZEDLMSG = "FTP RC ="RC 'ISPEXEC SETMSG MSG(ISRZ000)' END exit 0 ERROREXIT: SAY "FTP Site Information NOT Found Sitedata List" SAY "Tranfer not performed" SAY "Press ENTER to Continue" PARSE PULL Z exit 0 /*-- Pass Command to OS -----------------------------------------------------------------------------*/ TOSCMD: PROCEDURE PARSE ARG TSPF, TCMD IF TSPF = 0 THEN ADDRESS COMMAND TCMD /*DOSREXX*/ IF (TSPF = 4 | TSPF = 5) THEN ADDRESS DOS TCMD /*SPFPC4/SPFPRO - Delete if using OOREXX*/ IF TSPF = 6 THEN TCMD /*OOREXX*/ RETURN /*---------------------------------------------------------------------------------------------------*/