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