[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: SV: TESTPUT w. var. for local path frequently returns "No such path ordirectory lists



Magne,

My experience with building the string in the RQSDTA parm of SBMJOB is 
that it's an obscure technique that non-expert programmers don't understand.

The problem can be solved with a simple command-wrapper... and that's 
what I recommend if you're having this problem on a SBMJOB.

(The OP wasn't using SBMJOB, so I didn't think it made sense to take 
this further....)



On 1/31/2011 6:04 AM, Magne Kofoed wrote:
>
>     Hi,
>
>     when "normal" sbmjob fails, i have used sbmjob and RQSDTA:
>     Example:
>
>     SBMJOB     JOB(MAIL) JOBQ(QBATCH) RQSDTA('CALL PRX900C +
>                  PARM(''' *TCAT&PAADR1 *CAT ''' ''' *CAT +
>                  &PAADR2 *CAT ''' ''' *CAT&PXPDF *CAT +
>                  ''' ''' *CAT&SUBJECT *CAT ''' ''' *CAT +
>                  &MAILBODY *CAT ''')')
>
>
>
>     This approach works for me.
>
>     Best regards,
>
>     Magne
>       _________________________________________________________________
>
>     Fra: ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx på vegne av Morten Ju
>     Hansen
>     Sendt: ma 31.01.2011 12:22
>     Til: ftpapi@xxxxxxxxxxxxxxxxxxxxxx
>     Emne: TESTPUT w. var. for local path frequently returns "No such path
>     ordirectory lists
>
>     Hi Scott.
>     It works fine using your corrections to my program.
>     Thanks a lot for helping me out of that.
>     Morten
>     Morten Ju Hansen
>     IT-udvikling
>     IT Development
>     ____________________________________________
>     KODA
>     Landemærket 23-25
>     Postboks 2154
>     DK-1016 København K
>     T:  +45 33 30 63 84
>     F:  +45 33 30 63 30
>     mjh@xxxxxxx | www.koda.dk
>     ____________________________________________
>     Message: 1
>     Date: Fri, 28 Jan 2011 12:02:16 -0600
>     From: Scott Klement<sk@xxxxxxxxxxxxxxxx>
>     Subject: Re:
>     "
>     To: ftpapi@ TESTPUT w. var. for local path frequently returns "No
>             such path       or      directory lists.scottklement.com
>     Message-ID:<4D4304A8.8040502@xxxxxxxxxxxxxxxx>
>     Content-Type: text/plain; charset=ISO-8859-1; format=flowed
>     Hello,
>     When you pass a parameter as a literal from CL or the command-line,
>     it's
>     assumed to be TYPE(*CHAR) LEN(32). When you code a literal longer than
>     32 chars, it assumes the variable should be the exact length of your
>     literal.
>     This is what you have in your CL program:
>            CALL       PGM(LIBFTP/TESTPUTMJH) +
>                       PARM('ndisfiles/prod/society/063/S063376.zi+
>                       p')
>     So what it's passing to TESTPUTMJH is a char variable that's defined
>     as
>     LEN(38) (because your path is 38A).
>     When FTPAPI receives it, however, it's received into a 256 byte char
>     field.
>     Let's say (for the sake of understanding) your variable is placed in
>     yoru computer's memory banks at memory address 1000.  That means that
>     your 38A variable occupies memory positions 1000-1037.  Anything from
>     1038 upwards might be used for other variables in your application, or
>     might be unused space that the OS hasn't yet assigned to anything.
>     The problem is, FTPAPI is looking at positions 1000-1255.  That's 218
>     bytes of memory that might belong to some other variable on the
>     system!
>       And might contain characters that aren't part of your filename.  The
>     result?  Sometimes it works (if you're "lucky" and the memory is
>     unused)
>     and sometimes it doesn't.
>     Note that it's purely coincidence that FTPAPI is involved in this
>     case.
>       This problem can happen with ANY program call on IBM i where a
>     literal
>     is used for something larger than 32 chars.
>     in your case, the easiest solution is probably to control the variable
>     that's passed to the RPG like this:
>     PGM
>          DCL VAR(&FILE) TYPE(*CHAR) LEN(256)
>          CHGVAR VAR(&FILE) +
>                 VALUE('ndisfiles/prod/society/063/S063376.zip')
>          CALL   PGM(LIBFTP/&FILE)
>     ENDPGM
>     In this case, you've told it how large the variable should be, so that
>     won't be a problem.  (However, it'll still fail if you use SBMJOB)
>     On 1/28/2011 4:49 AM, Morten Ju Hansen wrote:
>     >
>     >      Hello everybody.
>     >
>     >
>     >      I think the FTPAPI looks like a fine piece of sottware.
>     >
>     >
>     >      -but having debugged my own version TESTPUTMJH, of TESTPUT, as
>     well as
>     >      browsing the archives I have come to the of my wits.
>     >
>     >
>     >      TESTGET works great.
>     >
>     >      I get the fips.exe right on spot whenever I try.
>     >
>     >
>     >      TESTPUT, modified with hardcoded servername/user/password for
>     our
>     >      remote server, puts always the fips.exe right on.
>     >
>     >
>     >      Got practically no experience with FTP nor coding RPG, so I
>     started
>     >      with small ambitions:.
>     >
>     >      TESTPUTMJH, my version of TESTPUT (Please see code enclosed at
>     end of
>     >      mail)
>     >
>     >      CL program TSPUTMJHCL (code also enclosed) for calling
>     TESTPUTMJH and
>     >      not having to write the path for my local testfile all the time.
>     >
>     >
>     >      Whether I call TESTPUTMJH directly or indirectly by calling
>     TSPUTMJHCL
>     >      I more often than not receive the error message "No such path or
>     >      directory.". When debugging with STRDBG it goes wrong here:
>     >
>     >      FTP_put
>     >
>     >      .
>     >
>     >      .
>     >
>     >      eval      wwFD = OpnFile(wwLocal: 'R': p_read:
>     >
>     >                            p_close: peSocket)
>     >
>     >      .
>     >
>     >      .
>     >
>     >      FYI wwFD contains -1 when it fails at my place.
>     >
>     >
>     >      Curiously to me the statement `eval      wkTotBytes =
>     >      lclFileSiz(wwLocal)' just two lines above ALWAYS returns the
>     filesize
>     >      correctly.
>     >
>     >
>     >      -but sometimes it all work.
>     >
>     >      When entering i5/OS Main Menu and CALL TSPUTMJHCL I most often
>     get "No
>     >      such path or directory." and then it goes wrong no matter how
>     many
>     >      times I try.
>     >
>     >
>     >      STRPDM, WRKSPLF or Entering STRISDB and leaving ISDB sometimes
>     make it
>     >      execute correctly when called from a command line one of those
>     places.
>     >
>     >
>     >      When debugging it looks to me as wwLocal, p-read, p_close and
>     peSocket
>     >      always contains the same values before executing
>     >
>     >      eval      wwFD = OpnFile(wwLocal: 'R': p_read:
>     >
>     >                            p_close: peSocket)
>     >
>     >
>     >      The path supplied in wwLocal is NEVER enclosed in quotes nor
>     >      apostrophes.
>     >
>     >      I have seen it work with the path
>     >
>     >      ndisfiles/prod/society/063/S063376.zip
>     >
>     >      and also with this
>     >
>     >      /ndisfiles/prod/society/063/S063376.zip
>     >
>     >      -      As well as failing with either.
>     >
>     >
>     >      So far I have not succeeded when submitting TSPUTMJHCL
>     >
>     >
>     >      Thanks for reading and wishing you all a great weekend.
>     >
>     >
>     >      Morten
>     >
>     >
>     >      CL code for TSPUTMJHCL:
>     >
>     >
>     >      PGM
>     >
>     >
>     >
>     >             /*    CHDIR      DIR(/)        */
>     >
>     >             /*    CHDIR      DIR('NDISFILES/PROD/SOCIETY/063')     */
>     >
>     >                   DSPCURDIR
>     >
>     >
>     >
>     >                   CALL       PGM(LIBFTP/TESTPUTMJH) +
>     >
>     >
>     PARM('ndisfiles/prod/society/063/S063376.zi+
>     >
>     >                                p')
>     >
>     >      ENDPGM
>     >
>     >      ****************** End of data
>     >      ****************************************
>     >
>     >
>     >      Code for TESTPUTMJH
>     >
>     >
>     >      0062.00
>     >
>     >      0063.00 H BNDDIR('FTPAPI') DFTACTGRP(*NO)
>     >      ACTGRP(*NEW)
>     >
>     >      0064.00
>     >
>     >      0065.00  /COPY QRPGLESRC,FTPAPI_H
>     >
>     >      0066.00
>     >
>     >      0067.00 D Msg             S
>     >      52A
>     >
>     >      0068.00 D sess            S             10I
>     >      0
>     >
>     >      0069.00 D Homedirfil      S
>     >      256A
>     >
>     >      0072.00
>     >
>     >      0073.00 c     *entry
>     >      plist
>     >
>     >      0074.00 c                   parm
>     >      Homedirfil
>     >
>     >      0075.00  * connect to FTP server.  If an error
>     >      occurs,
>     >
>     >      0076.00  *  display an error message and
>     >      exit.
>     >
>     >      0077.00 c                   eval      sess = ftp_conn('X.X.X':
>     >
>     >      0078.00 c                                        'X':
>     >
>     >      0079.00 c                                        'X')
>     >
>     >      0080.00 c                   if        sess<
>     >      0
>     >
>     >      0081.00 c                   eval      Msg =
>     >      ftp_errorMsg(0)
>     >
>     >      0082.00 c                   dsply
>     >      Msg
>     >
>     >      0083.00 c                   eval      *inlr =
>     >      *on
>     >
>     >      0084.00 c                   return
>     >
>     >      0085.00 c                   endif
>     >
>     >      0086.00
>     >
>     >      0087.00  * Change to the CRD_test directory on
>     >
>     >      0088.00  *  this FTP server.  Deal with any errors.
>     >
>     >      0089.00 c                   if        ftp_chdir(sess:
>     'CRD_test')<   0
>     >
>     >      0090.00 c                   eval      Msg = ftp_errorMsg(sess)
>     >
>     >      0091.00 c                   dsply                   Msg
>     >
>     >      0092.00 c                   dsply                   Msg
>     >
>     >      0093.00 c                   callp     ftp_quit(sess)
>     >
>     >      0094.00 c                   eval      *inlr = *on
>     >
>     >      0095.00 c                   return
>     >
>     >      0096.00 c                   endif
>     >
>     >      0097.00
>     >
>     >      0098.00
>     >
>     >      0099.00  * put the file specified in Homedirfil
>     >
>     >      0101.00 c                   callp     ftp_binaryMode(sess: *on)
>     >
>     >      0102.00 c                   if        ftp_put(sess:
>     'S063376.zip':
>     >
>     >      0103.00 c                                     Homedirfil)<   0
>     >
>     >      0104.00 c                   eval      Msg = ftp_errorMsg(sess)
>     >
>     >      0105.00 c                   dsply                   Msg
>     >
>     >      0106.00 c                   dsply                   Msg
>     >
>     >      0107.00 c                   dsply                   Msg
>     >
>     >      0108.00 c                   endif
>     >
>     >      0109.00
>     >
>     >      0110.00 c                   callp     ftp_quit(sess)
>     >
>     >      0111.00 c                   eval      *inlr = *on
>     >
>     >      0112.00 c                   return
>     >
>     >
>     >      Morten Ju Hansen
>     >      IT-udvikling
>     >
>     >      IT Development
>     >
>     ------------------------------
>     ----------------------------------------------------------------------
>     -
>     This is the FTPAPI mailing list digest.  To unsubscribe, go to:
>     [1]http://www.scottklement.com/mailman/listinfo/ftpapi
>     ----------------------------------------------------------------------
>     -
>     End of Ftpapi Digest, Vol 55, Issue 26
>     **************************************
>     ______________________________________________________________________
>     This email has been scanned by the MessageLabs Email Security System.
>     For more information please visit [2]http://www.messagelabs.com/email
>     ______________________________________________________________________
>     ----------------------------------------------------------------------
>     -
>     This is the FTPAPI mailing list.  To unsubscribe, please go to:
>     [3]http://www.scottklement.com/mailman/listinfo/ftpapi
>     ----------------------------------------------------------------------
>     -
>
> References
>
>     1. http://www.scottklement.com/mailman/listinfo/ftpapi
>     2. http://www.messagelabs.com/email
>     3. http://www.scottklement.com/mailman/listinfo/ftpapi
>
>
>
>
> -----------------------------------------------------------------------
> This is the FTPAPI mailing list.  To unsubscribe, please go to:
> http://www.scottklement.com/mailman/listinfo/ftpapi
> -----------------------------------------------------------------------

-----------------------------------------------------------------------
This is the FTPAPI mailing list.  To unsubscribe, please go to:
http://www.scottklement.com/mailman/listinfo/ftpapi
-----------------------------------------------------------------------