× 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.



Another solution would be to add a data structure for the source file to the program and use that for his I/O:
FQCLSRC UF F 92 DISK
IQCLSRC AA 01
*
D SOURCE E DS EXTNAME(QCLSRC)
C *entry plist
C parm filename 24
*
C read QCLSRC SOURCE
*
C eval SrcDta = 'delete ' + filename
C update qclsrc SOURCE
*
C eval *inlr = *on


Jeff Young
Sr. Programmer Analyst
IBM -e(logo) server Certified Systems Exper - iSeries Technical Solutions V5R2
IBM Certified Specialist- e(logo) server i5Series Technical Solutions Designer V5R3
IBM Certified Specialist- e(logo)server i5Series Technical Solutions Implementer V5R3









----- Original Message ----
From: Peter Dow (ML) <maillist@xxxxxxxxxxxxxxx>
To: Midrange Systems Technical Discussion <midrange-l@xxxxxxxxxxxx>
Sent: Tuesday, February 26, 2008 2:10:22 PM
Subject: Re: Updating a program described file

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 ...

Follow-Ups:

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.