|
(My apologies for also posting to Midrange list)
Please help with writing to an externally described file using a data
structure. I have been to the archives, googled, RFMd (which appears to
have some inconsistent info concerning 'WRITE'), and not found what I
was looking for.
I am running at V5R2.
Situation:
I have 2 externally defined files with some common field names. Common
names are: Prt#, CYMD, and Cost. I am reading/accumulating values from
the first file and filling the qualified DS fields before writing to the
second. At some point I have read a record, 'unqualified' field names
contain values from this record, and the 'qualified DS' field names
contain the values to be posted.
Problem:
I cannot figure out how to get the data structure written to the file
using the
free-form "WRITE{(E)} name {data-structure}" method as shown in the
manual.
I realize I could do this other ways, "Prefix", another DS, etc., but I
like the concept of 'qualified data structure' to differentiate fields,
and really want to make this work, if possible.
*****************
Specifications for 'output' file:
FSrcCst UF A E K Disk
*****************
DDS for file SrcCst:
R SRCCSTR
PRT# 7S 0
SOUR 2A
CYMD 8S 0
FOTG 8S 0
COST 12S 4
K PRT#
K SOUR
K CYMD
*****************
Data structure definition:
(PDM/SEU allows either of these)
D ScRecd E DS ExtName(SrcCst:SrcCstR:*Output) Inz
D Qualified
...or...
D ScRecd E DS ExtName(SrcCst:*Output) Inz
D Qualified
*****
(PDM/SEU does NOT allow these)
D ScRecd E DS LikeRec(SrcCst:SrcCstR:*Output) Inz
D Qualified
The LIKEDS keyword is not valid with an externally-described
data structure.
(What LIKEDS ????)
D ScRecd E DS LikeDS(SrcCst:SrcCstR:*Output) Inz
D Qualified
The LIKEDS keyword is not valid with an externally-described
data structure.
D ScRecd DS LikeDS(SrcCst:SrcCstR:*Output) Inz
D Qualified
A right parenthesis is expected but is not found.
(To match with what ????)
D ScRecd DS LikeDS(SrcCst:*Output) Inz
D Qualified
A right parenthesis is expected but is not found.
(To match with what ????)
*****************
Compilation attempts and resulting errors:
040200 Write(E) SrcCstR ScRecd;
*RNF7701 30 040200 Data structure SCRECD is not allowed
for the operation.
040300 Write(E) SrcCst ScRecd;
*RNF5155 20 040300 The Result-Field operand is not
allowed for specified operation.
*RNF5063 30 040300 Factor 2 operand must not be an
externally described file for this operation.
From ILE RPG Reference manual for "Write":
If name refers to an
externally-described file or a record format
from an externally
described file, the data structure must be a
data structure defined
with EXTNAME(...:*OUTPUT) or LIKEREC(...:*OUTPUT).
???????
040400 Write(E) SrcCst SrcCstR;
*RNF5155 20 040300 The Result-Field operand is not
allowed for specified operation.
*RNF5063 30 040300 Factor 2 operand must not be an
externally described file for this operation.
040500 Write(E) ScRecd;
*RNF7260 30 040500 The Factor 2 operand is not valid for
the specified operation.
040600 Write(E) SrcCst;
*RNF5063 30 040600 Factor 2 operand must not be an
externally described file for this operation.
040700 Write(E) SrcCstR;
Compiles........ and in debug immediately before "Write(E)
SrcCstR;":
> EVAL screcd
SCRECD.PRT# = 0000010.
SCRECD.SOUR = 'SI'
SCRECD.CYMD = 20040401.
SCRECD.FOTG = 00030039.
SCRECD.COST = 00000001.3975
>EVAL Prt#
PRT# = 0000010. (value is from input file field Prt#)
>EVAL Sour
SOUR = ' ' (non-common field)
> EVAL cymd
CYMD = 20040202. (value is from input file field CYMD)
> EVAL Fotg
FOTG = 00000000. (non-common field)
> EVAL Cost
COST = 00000001.4116 (value is from input file field Cost)
File before "Write" had no records.
File after Write:
PRT# = 10 (correct, 'accidentally', from input
file)
SOUR = ' ' (incorrect, non-common, no SrcCst record
had been read to fill)
CYMD = 20040202 (incorrect, from input file)
FOTG = 0 (incorrect, non-common, no SrcCst record
had been read to fill)
COST = 14116 (incorrect, from input file)
Thanks for any help or insight.
Tim Kredlo
Exterior Wood, Inc
This mailing list archive is Copyright 1997-2026 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.