You are on page 1of 2

Build an enquiry with a Nofile

wikibanking.info/2012/08/build-an-enquiry-with-a-nofile/

Marc August 24, 2012

Build an enquiry driven to a NOFILE

When you can’t use standard conversion / calculation functions to get what you need in
an Enquiry, you still have a programming solution. It occurs typically when you need data
spread in multiple tables, because ENQUIRY tool is single-table driven. You can use links
to other tables when you have foreign keys in the requested table, but no more.
Using a subroutine and a NOFILE, you have no limitations to get data among multiple
tables.

The concept is:

1. Target enquiry to a virtual table e.g. “a NOFILE” and named NOFILE.xxx depending
on the business context.

2. Declare a call of a subroutine in a field of this NOFILE.xxx, through its dictionary (in
STANDARD.SELECTION).

3. The subroutine will select all needed data and fill a dynamic array returned , including a
delimiter of your choice.

4. In the ENQUIRY, you get all needed data by extracting values between each delimiter.

Example :

1. STANDARD SELECTION

FILE.NAME......... NOFILE.DX.CLOSEOUT

15. 1 USR.FIELD.NAME. RET.ID


16. 1 USR.TYPE....... D
17. 1. 1 USR.FIELD.NO 0
20. 1 USR.DISPLAY.FMT 1000L
24. 1 USR.SINGLE.MULT S
25. 1 USR.LANG.FIELD. N
15. 2 USR.FIELD.NAME. RTN.CALL
16. 2 USR.TYPE....... R
17. 2. 1 USR.FIELD.NO E.NOFILE.DX.CLOSEOUT
20. 2 USR.DISPLAY.FMT 10L
24. 2 USR.SINGLE.MULT S
25. 2 USR.LANG.FIELD. N

2. SUBROUTINE E.NOFILE.DX.CLOSEOUT(RETURN.ARRAY)

1/2
(...)
TEMP.DATA = POS.KEY : "*" : POS.DATE : "*" : POS.CONTRACT : "*" : POS.MATURITY
: "*" : POS.CURR : "*" etc...
RETURN.ARRAY<-1> = TEMP.DATA
(...)

3. ENQUIRY

ENQUIRY........... DX.CLOSEOUT.FINAL.FUT.HIS
---------------------------------------------------
1 PAGE.SIZE ........ 4,19
2 FILE.NAME......... NOFILE.DX.CLOSEOUT
3. 1 FIXED.SELECTION RTN.CALL NE NULL

11. 1 FIELD.NAME..... RET.ID


12. 1. 1 OPERATION... RET.ID
14. 1 LENGTH.MASK.... 1000L
32. 1 SINGLE.MULTI... S

11. 2 FIELD.NAME..... POS.KEY


12. 2. 1 OPERATION... F RET.ID
13. 2 COLUMN......... 1
15. 2. 1 CONVERSION.. F *,1,1
19. 2. 1 GB FIELD.LBL Key
32. 2 SINGLE.MULTI... S

11. 3 FIELD.NAME..... POS.DATE


12. 3. 1 OPERATION... F RET.ID
13. 3 COLUMN......... 2
15. 3. 1 CONVERSION.. F *,2,1
(...)

2/2

You might also like