ENQUIRY ROUTINES
OBJECTIVE
16 October 2006
Introduction
16 October 2006
1
Enquiry Subroutines
16 October 2006
Working of Enquiry Subsystem
16 October 2006
I_ENQUIRY.COMMON
16 October 2006
2
O.DATA
16 October 2006
R.RECORD
16 October 2006
BUILD Routine Use to Manipulate the “Selection Criteria Box” Get Invoked :
after The fixed selection has been executed
before The dynamic conditions in selection criteria get executed Attached & Specified in Field#12.1”BUILD.ROUTINE” in ENQUIRY application.
16 October 2006
3
BUILD Routine
16 October 2006
Example 1
16 October 2006
Solution 1
Create and enquiry that will display the Customer ID, Account ID and Working Balance from the ACCOUNT file.
16 October 2006
4
Example 1
16 October 2006
Solution 1 – Algorithm
16 October 2006
Solution 1
16 October 2006
5
Solution 1
16 October 2006
WORKSHOP 1
16 October 2006
CONVERSION ROUTINE
16 October 2006
6
Example 2
16 October 2006
Solution 2
16 October 2006
Solution 2
16 October 2006
7
Solution 2
16 October 2006
Solution 2 SUBROUTINE E.TRG.CONV.RTN $INSERT I_COMMON $INSERT I_EQUATE $INSERT I_ENQUIRY.COMMON $INSERT I_F.LD.LOANS.AND.DEPOSITS $INSERT I_F.ENQUIRY * GOSUB INITIALISE GOSUB PROCESS RETURN END
16 October 2006
Solution 2 INITIALISE: FN.CURR = “F.CURRENCY” ; FV.CURR = “” CALL OPF(FN.CURR, FV.CURR) Y.LD.CURR = R.RECORD
Y.CURR.REC = “” RETURN PROCESS: IF Y.LD.CURR <> LCCY THEN CALL F.READ(FN.CURR, Y.LD.CURR, R.CURR, FV.CURR, RET.ERR)
O.DATA = R.CURR<EB.CUR.MID.VAL.RATE, 1> * O.DATA
END
RETURN * END
16 October 2006
8
Solution 2
16 October 2006
WORKSHOP 2
16 October 2006
Summary
16 October 2006
9
Creating NOFILE Enquiries
16 October 2006
Agenda
16 October 2006
Prerequisites
16 October 2006
10
Why NOFILE enquiry?
16 October 2006
Setting up the ENQUIRY application
16 October 2006
Setting up the ENQUIRY application
16 October 2006
11
Setting up the ENQUIRY application
Component of NOFILE enquiry are : • InfoBasic Routine • Standard Selection record • ENQUIRY record
16 October 2006
NOFILE enquiry example
16 October 2006
Files to be used
16 October 2006
12
Solution 1 - Algorithm
16 October 2006
Solution 1 - Algorithm
16 October 2006
Routine for NOFILE enquiry SUBROUTINE E.NOF.CUS.AC.DET(AC.DET.ARR) $INSERT I_COMMON $INSERT I_EQUATE $INSERT I_ENQUIRY.COMMON $INSERT I_F.CUSTOMER $INSERT I_F.ACCOUNT $INSERT I_F.CUSTOMER.ACCOUNT $INSERT I_F.STMT.ENTRY $INSERT I_F.ACCR.ACCT.CR $INSERT I_F.ACCR.ACCT.DR GOSUB INITIALISE GOSUB PROCESS RETURN
16 October 2006
13
NOFILE Routine *----------------* INITIALISE: *----------------* FN.CUSTOMER.ACCOUNT = “F.CUSTOMER.ACCOUNT” ; FV.CUSTOMER.ACCOUNT = “” CALL OPF(FN.CUSTOMER.ACCOUNT, FV.CUSTOMER.ACCOUNT” FN.ACCR.ACCT.CR = “F.ACCR.ACCT.CR” ; FV.ACCR.ACCT.CR = “” CALL OPF(FN.ACCR.ACCT.CR, FV.ACCR.ACCT.CR) FN.ACCR.ACCT.DR = “F.ACCR.ACCT.DR” ; FV.ACCR.ACCT.DR = “” CALL OPF(FN.ACCR.ACCT.DR, FV.ACCR.ACCT.DR) FN.ACCT.ENT.FWD = “F.ACCT.ENT.FWD” ; FV.ACCT.ENT.FWD = “” CALL OPF(F.ACCT.ENT.FWD, FV.ACCT.ENT.FWD) FN.STMT.ENTRY = “F.STMT.ENTRY” ; FV.STMT.ENTRY = “” CALL OPF(FN.STMT.ENTRY, FV.STMT.ENTRY) RETURN
16 October 2006
NOFILE Routine *------------------* PROCESS: *------------------* LOCATE “CUSTOMER.ID” IN D.FIELDS<1> SETTING CUS.POS THEN CUS.ID = D.RANGE.AND.VALUE END CALL F.READ(FN.CUSTOMER.ACCOUNT, CUS.ID, R.CUS.ACCOUNT, FV.CUSTOMER.ACCOUNT, RET.ERR)
16 October 2006
NOFILE Routine LOOP REMOVE ACC.ID FROM R.CUS.ACC SETTING POS WHILE ACC.ID:POS GOSUB CALC.ENT.FWD GOSUB CALC.ACCR.INT AC.DET.ARR<-1> = ACC.ID:”*”:DR.AMT:”*”:CR.AMT:”*”:CR:”*”:TOT.INT:”*”:CR.TOT.INT
REPEAT RETURN
16 October 2006
14
*--------------------------* CALC.ENT.FWD: *--------------------------* DR.AMT = “” ; CR.AMT = “” CALL F.READ(FN.ACCT.ENT.FWD, ACC.ID, R.FWD, FN.ACCT.ENT.FWD, RET.ERR) LOOP REMOVE STMT.ID FROM R.FWD SETTING FWD.POS WHILE STMT.ID:FWD.POS CALL F.READ(FN.STMT.ENTRY, STMT.ID, R.STMT, FV.STMT.ENTRY, RET.ERR) ACCT.ENT.AMT = R.STMT IF ACCT.ENT.AMT < 0 THEN DR.AMT += ABS(ACCT.ENT.AMT) END ELSE CR.AMT += ACCT.ENT.AMT END REPEAT RETURN
16 October 2006
NOFILE Routine *------------------------- * CALC.ACCR.INT: *-------------------------* CR.TOT.INT = “” ; DR.TOT.INT = “” CALL F.READ(FN.ACCR.ACCT.CR, ACC.ID, R.AC.CR, FV.ACCR.ACCT.CR, RET.ERR) CR.TOT.INT = R.AC.CR CALL F.READ(FN.ACCR.ACCT.DR, ACC.ID, R.AC.DR, FV.ACCR.ACCT.DR, RET.ERR2) DR.TOT.INT = R.AC.DR RETURN END
16 October 2006
STANDARD.SELECTION Record
16 October 2006
15
STANDARD SELECTION Record
16 October 2006
ENQUIRY Record
16 October 2006
ENQUIRY Record
16 October 2006
16
Executing Enquiry
16 October 2006
Sample Output
16 October 2006
Summary
16 October 2006
17
Summary (Cont.)
16 October 2006
THE END
16 October 2006
18