× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.


  • Subject: Re: Successful FTP Code
  • From: "Sammy Mak" <mak@xxxxxxxx>
  • Date: Thu, 5 Jun 1997 09:39:14 +0500
  • Comments: Authenticated sender is <mak@itlsgate>
  • In-reply-to: <339580DD.5A07@PlanetHollywood.com>
  • Organization: InterTrans Logistics Solutions Limited

> Does the 400 create a job log for data transfers started from the PC to
> the AS/400
> by FTP?  If not, how can I create some kind of log to monitor all FTP
> actions?
> 
> Vishwanath Nemani wrote:
> > 
> >  "Terry Glass" <tglass@netpath.net> wrote:
> > 
> > >For those who requested the code to check for a successful FTP-here it is.
> > >I can't take credit, Carl Galgano and Cathy Wilbur supplied most of the
> > >bits and pieces.   This code runs on 3 different systems, and I trap the
> > >output log so it can be referred to if necessary.  In this case, we're
> > >going from an AS400 to a PC-based imaging system.
> > >
> > 
> > There's another way of achieving this.  Code an FTP source code as follows:
> > 
> > ID PASSWORD
> > LS pathname  (DISK
> > QUIT
> > 
> > After executing this FTP session a file LSOUTPUT is created with member
> > LSOUTPUT. This file contains the list of all the files from the remote 
>pathname.
> > Now in the CL program type following command:
> > RTVMBRD FILE(LSOUTPUT) NBRCURRCD(&NBRCURREC1)
> > This will give you the number of files existing in the remote path.
> > 
> > Now,  add the second line( LS pathname  (DISK )  in your original FTP source
> > code after the PUT command (shown below).
> > 
> > >Part 1-FTP TEXT
> > >ID PASWORD
> > >ASCII
> > >PUT LIB/FILE1 '''PC FILE'''
> > LS pathname  (DISK
> > >QUIT
> > >
> > 
> > Now in the CL program type following command:
> > RTVMBRD FILE(LSOUTPUT) NBRCURRCD(&NBRCURREC2)
> > 
> > The CL program can be something like this:
> > 
> > PGM
> > 
> >   execute the first FTP source code
> >   RTVMBRD FILE(LSOUTPUT) NBRCURRCD(&NBRCURREC1)
> > 
> >   execute your original FTP source code
> >  RTVMBRD FILE(LSOUTPUT) NBRCURRCD(&NBRCURREC2)
> > 
> >   /*check to see if the file was transferred successfully or not. */
> > 
> >  IF COND(&NBRCURREC2 *GT &NBRCURREC1)
> > 
> >       /*      "File transfer successfull...."        */
> > 
> >   ELSE
> > 
> >       /*      "File transfer Unsuccessfull...."         */
> > 
> > ENDPGM
> > 
> > 
> > HTH
> > 
> > Vishwanath Nemani
> > 
> > >Part 2-CL program
> > >             PGM
> > >
> > >             DCL        VAR(&SYSNAM) TYPE(*CHAR) LEN(8)
> > >             DCL        VAR(&MEMBER) TYPE(*CHAR) LEN(10)
> > >
> > >             DCLF       FILE(QTEMP/FTPLOG)
> > >
> > >/* Create temp file to capture FTP log                              */
> > >             CRTPF      FILE(QTEMP/FTPLOG) RCDLEN(132)
> > >             MONMSG     MSGID(CPF0000) EXEC(CLRPFM FILE(QTEMP/FTPLOG))
> > >
> > >/* Get system name & determine which FTP source to use              */
> > >             RTVNETA    SYSNAME(&SYSNAM)
> > >
> > >             IF         COND(&SYSNAM *EQ 'SYSTEM 1') THEN(DO)
> > >             CHGVAR     VAR(&MEMBER) VALUE('IMGSYS1')
> > >             ENDDO
> > >             IF         COND(&SYSNAM *EQ 'SYSTEM 2') THEN(DO)
> > >             CHGVAR     VAR(&MEMBER) VALUE('IMGSYS2')
> > >             ENDDO
> > >             IF         COND(&SYSNAM *EQ 'SYSTEM 3') THEN(DO)
> > >             CHGVAR     VAR(&MEMBER) VALUE('IMGSYS3')
> > >             ENDDO
> > >
> > >
> > >/* Override files, then perform FTP                                 */
> > >             OVRDBF     FILE(INPUT) TOFILE(LIB/FTPSRC) MBR(&MEMBER)
> > >             OVRDBF     FILE(OUTPUT) TOFILE(QTEMP/FTPLOG)
> > >
> > >             STRTCPFTP  RMTSYS(PCIMGSRVR)
> > >
> > >/* Trap FTP log in case it may be needed                            */
> > >             CPYF       FROMFILE(QTEMP/FTPLOG) TOFILE(LIB/FTPLOG) +
> > >                          MBROPT(*REPLACE) CRTFILE(*NO) FMTOPT(*NOCHK)
> > >
> > >/* Scan FTPLOG, if SUCCESSFUL TRANSFER (226) found, clear FILE1;    */
> > >/* else send operator message to check FTP status                   */
> > > RCVF:       RCVF
> > >             MONMSG     MSGID(CPF0000) EXEC(GOTO CMDLBL(ERROR))
> > >             IF         COND(%SST(&FTPLOG 1 3) *EQ '226') THEN(DO)
> > >             CLRPFM     FILE(LIB/FILE1)
> > >             SNDPGMMSG  MSG('FTP transfer of BL data to Imaging +
> > >                          completed successfully') TOUSR(*SYSOPR)
> > >             GOTO       CMDLBL(DONE)
> > >             ENDDO
> > >             ELSE       CMD(DO)
> > >             GOTO       CMDLBL(RCVF)
> > >             ENDDO
> > >
> > > ERROR:      SNDPGMMSG  MSG('FTP transfer of BL data to Imaging did +
> > >                          NOT complete successfully.  Please verify +
> > >                          that FTP is working both at this location +
> > >                          and at the corporate Imaging system +
> > >                          before retrying.  Please reply with your +
> > >                          User ID now.') TOUSR(*SYSOPR) MSGTYPE(*INQ)
> > >
> > > DONE:       DLTOVR     FILE(INPUT)
> > >                  DLTOVR     FILE(OUTPUT)
> > >
> > >             ENDPGM
> > >
> > >The code could probably be shorter, but it works.
> > >
 
I found that if you just check for the 226 message ID, it is not
reliable at all.  I experience a partial of failed transfer and
I still get 226.  My work around is to retrive # of record and
record size and compute the bytes will be transferred and 
compare to the bytes count after the 226 message.  That;'s a bit
more reliable.

# of record, you can use rtvmbrd.
record lenght, you can use API QUSDLTUS
===================================================
Sammy Mak
InterTrans Logistics Solutions
80 Whitehall Drive, 
Markham, Ontario L3R 0P3
Voice: 905 944-8088 x 8266   Fax: 905 944-0364
Email: mak@itls.com
Company Home page:   http://www.itls.com
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* This is the Midrange System Mailing List!  To submit a new message,   *
* send your mail to "MIDRANGE-L@midrange.com".  To unsubscribe from     *
* this list send email to MAJORDOMO@midrange.com and specify            *
* 'unsubscribe MIDRANGE-L' in the body of your message.  Questions      *
* should be directed to the list owner / operator: david@midrange.com   *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *


As an Amazon Associate we earn from qualifying purchases.

This thread ...

Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.