[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
- From: Scott Klement <sk@xxxxxxxxxxxxxxxx>
- To: HTTPAPI and FTPAPI Projects <ftpapi@xxxxxxxxxxxxxxxxxxxxxx>
- Subject: Re: SV: TESTPUT w. var. for local path frequently returns "No such path ordirectory lists
- Date: Mon, 31 Jan 2011 15:44:02 -0600
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
-----------------------------------------------------------------------