You are on page 1of 18

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

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<CUS.POS>
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<AC.STE.AMOUNT.LCY>

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<IC.ACRCR.TOTAL.INTEREST>

CALL F.READ(FN.ACCR.ACCT.DR, ACC.ID, R.AC.DR, FV.ACCR.ACCT.DR, RET.ERR2)


DR.TOT.INT = R.AC.DR<IC.ACRDR.TOTAL.INTEREST>

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

You might also like