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



Hi Rick,

A WRITE statement in RPG will move the fields from your RPG program to the file (or SPECIAL file program in this case.)

A READ statement does the opposite, it moves the fields from the file (or SPECIAL program) to your RPG.

Therefore changing the fields before a READ doesn't make sense. But it does make sense that the field values you change prior to a READ won't be reflected in the SPECIAL program. After all... READ doesn't send data out to the special program! It just gets data as input from that program.




On 9/23/2010 1:28 PM, Rick.Chevalier@xxxxxxxxxxxxxxx wrote:
I am attempting to use a special file program to handle I/O for a file conversion we are contemplating. The issue I am having is that the parameters aren't changing between a write and a read operation. I want to test the error handling if a read operation fails. I can't get it to fail because the parms passed are the same ones I used to add a record even though I explicitly change them in the caller. Any ideas?

Caller:
fLNP00507 cf e Special PgmName('LNP00507R')

d TEST507 pr ExtPgm('TEST507')

/Free

lxBk = 8;
lxMDte = 092210;
lxMemo = 'Special file test memo';
lxNote = 123456789;
lxRec = 1;
Write LNP0057;

lxMemo = ' ';

lxNote = 3;
Read LNP00507;

If Not %EOF(LNP00507);
Dsply %Subst(lxMemo :1 :25);
EndIf;

*InLR = *On;

/End-Free

Special File program
d LNP00507R pr ExtPgm('LNP00507R')
d Action 1a Const
d Status 1a
d Error 5s 0
d RecData LikeDS(LNP00507DA)
// Layout of LNP00507 for received data format
d LNP00507DA e ds ExtName(LNP00507)
d Based(Template_Ptr)

// Format of output record
d SRVMEMOS e ds

// Constanst for possible actions
d OPEN_Request c 'O'
d CLOSE_Request c 'C'
d READ_Request c 'R'
d WRITE_Request c 'W'
d DELETE_Request c 'D'
d UPDATE_Request c 'U'
//-------------------------------------------------------------------
p File_Add b
d File_Add pi

/Free

LoanNumber = RecData.lxNote;
MemoType = 'LNP00507';
MemoTmsp = %TimeStamp(%Date(RecData.lxMDte :*MDY));
FiservID = %EditC(RecData.lxMDte :'X') + %EditC(RecData.lxRec :'X')
SrvMemLen = 70;
SrvMemCnt = 1;
SrvMemo = %TrimR(RecData.lxMemo);
AddUser = sdsUser;
AddTmsp = %Timestamp();
AddProc = %TrimR(sdsPgmLib) + '/' + %TrimR(sdsProcPgm) + '.' +
%TrimR(sdsProcMod) + '(File_Add)';

Exec SQL
Insert into SRVMEMOS
(LOAN_NUMBER, SRV_MEMO_TYPE, SRV_MEMO_TIMESTAMP,
SRV_MEMO_FISERV_ID, SRV_MEMO_LINE_LEN, SRV_MEMO_LINE_CNT,
SRV_MEMO, ADD_USER, ADD_TIMESTAMP, ADD_PROC)
Values (:LoanNumber, :MemoType, :MemoTmsp, :FiservID, :SrvMemLen,
:SrvMemCnt, :SrvMemo, USER, CURRENT_TIMESTAMP,
:AddProc);

If SQLState<> Success;
Status = '2'; // Error condition
Error = %Abs(SQLCod);
EndIf;

/End-Free

p File_Add e
//-----------------------------------------------------------------------
p File_Read b
d File_Read pi

/Free

MemoType = 'LNP00507';
FiservID = %EditC(RecData.lxMDte :'X') + %EditC(RecData.lxRec :'X');

Exec SQL
Select
SRV_MEMO_FISERV_ID, SRV_MEMO_LINE_LEN, SRV_MEMO_LINE_CNT, SRV_MEMO
into :FiservID, :SrvMemLen, :SrvMemCnt, :SrvMemo
from SRVMEMOS
where Loan_Number = :RecData.lxNote and
Srv_Memo_Type = MemoType and Srv_Memo_Fiserv_ID = FiservID;

If SQLState<> Success;
Status = '1'; // End of file
Clear RecData;
EndIf;

/End-Free

p File_Read e

Rick Chevalier
IT Software Solutions - Loan Servicing

________________________________
Privileged and Confidential. This e-mail, and any attachments there to, is intended only for use by the addressee(s) named herein and may contain privileged or confidential information. If you have received this e-mail in error, please notify me immediately by a return e-mail and delete this e-mail. You are hereby notified that any dissemination, distribution or copying of this e-mail and/or any attachments thereto, is strictly prohibited.


As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:
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.