Hi Booth, Tim,

Booth, what you may be missing is that it's an FTP script, which probably means he's trying to delete a file on a remote system, not the local system.

Tim, have you read the error message the compiler is giving you? I tried your code on a v5r4 system and got the following:

Message ID . . . . . . : RNF5191 Severity . . . . . . . : 30
Message type . . . . . : Diagnostic

Message . . . . : The Result-Field is not a data structure when Factor 2 is
a file name.
Cause . . . . . : When specifying a file name as the Factor 2 operand, the
Result-Field operand must be the name of a data structure. The specification
is ignored.
Recovery . . . : Correct the Factor 2 operand or the Result-Field operand.
Compile again.

The RPGLE reference manual does not state this requirement. It does say that *if* the data structure is specified, then "If name refers to a program-described file (identified by an F in Position 22 of the file description specification), the data structure can be any data structure of the same length as the file’s declared record length."

Another problem with your code is that a source file consists of 3 fields, a sequence#, 6-digit numeric field containing a date, and the actual source line. You could try this:

FQCLSRC UF F 92 DISK
IQCLSRC AA 01
I 1 6 0SrcSeq
I 7 12 0SrcDat
I 13 92 SrcDta

C *entry plist
C parm filename 24

C read QCLSRC

C eval SrcDta = 'delete ' + filename

C eval *inlr = *on

OQCLSRC t lr
O SrcDta 92

or actually use the external definition of the source file:

FQCLSRC UF E DISK rename(QCLSRC:QCLREC)
C *entry plist
C parm filename 24

C read QCLSRC

C eval SrcDta = 'delete ' + filename

C update QCLREC

C eval *inlr = *on

hth,

*Peter Dow* /
Dow Software Services, Inc.
909 793-9050
pdow@xxxxxxxxxxxxxxx <mailto:pdow@xxxxxxxxxxxxxxx> /

Booth Martin wrote:
What am I missing? Can he just use a remove member command? Either in CL or in RPG?

* Prototypes.
D wQcmdExc pr ExtPgm('QCMDEXC')
D 1024 const
D 15 5 const

* Delete Member.
C eval wCmdString = 'RMVM FILE(QCLSRC) MBR('
C + %trim(filename) + ')'
C callp wQCmdExc(wCmdString:
C %len(%trim(wCmdString)) )



Antonio Fernandez-Vicenti wrote:
Tim, let me point something about your code:
- you mention "I can read the file (qclsrc) member without issue", so I assume you do an OVRDBF prior to executing your program to point to the proper member.
- you are using a "program described file", so I believe there's NO NEED AT ALL to redifine record name to make its name different from file name... (some people told you to do so, but not needed in my opinion).
- you coded your file as "F QCLSRC UF F 92 DISK"
This, is NOT correct, I believe. "UF" means "update Full procedural", which (since there NO Key (K in some column I don't recall by heart between the 92 and "Disk" ) implies you HAVE TO ACCESS record via CHAIN op.code by record number..., and there's no Chain in your code!!!

I don't know how many records your FTP script has, but guess at least you'll have one for the Login, another for the Password, etc.
Is your "DELETE" record always in same record number? Let's say, the fourth...?
Then you should change your "READ" line for a line with say, " 4 CHAIN QCLRSC +indicatorXX in for NOT-found

Make sure the NOT-found indicator is OFF, or your "update" will fail!!!

HTH,
Antonio
--------------------------------------------------------------------------------------------------
Tim Gornall escribió:

I have an FTP script source member that I need to update dynamically.
Basically I am attempting to update a source physical file member from
within RPGLE. I can read the file (qclsrc) member without issue, but can't
get it to compile with update logic. I've tried a bunch of different
things, too much to put in this text. Here is an example of my code. Does
anyone have an example? Thanks, Tim
FQCLSRC UF F 92 DISK IQCLSRC AA 01 I 1 92 SrcDta * C *entry plist C parm filename 24 * C read QCLSRC * C eval SrcDta = 'delete ' + filename C update qclsrc * C eval *inlr = *on *




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.