|
(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
As an Amazon Associate we earn from qualifying purchases.
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.