By: Meadow Heath. FOCUS to DB2 Define DB2 table to FOCUS How FOCUS processes a DB2 request FOCUS to...

29
•By: Meadow Heath

Transcript of By: Meadow Heath. FOCUS to DB2 Define DB2 table to FOCUS How FOCUS processes a DB2 request FOCUS to...

Page 1: By: Meadow Heath. FOCUS to DB2 Define DB2 table to FOCUS How FOCUS processes a DB2 request FOCUS to DB2 Efficiencies.

•By: Meadow Heath

Page 2: By: Meadow Heath. FOCUS to DB2 Define DB2 table to FOCUS How FOCUS processes a DB2 request FOCUS to DB2 Efficiencies.

FOCUS to DB2

• Define DB2 table to FOCUS

• How FOCUS processes a DB2 request

• FOCUS to DB2 Efficiencies

Page 3: By: Meadow Heath. FOCUS to DB2 Define DB2 table to FOCUS How FOCUS processes a DB2 request FOCUS to DB2 Efficiencies.

Define DB2 table to FOCUS

• CAR Master File Description

• CAR Access File Description

Page 4: By: Meadow Heath. FOCUS to DB2 Define DB2 table to FOCUS How FOCUS processes a DB2 request FOCUS to DB2 Efficiencies.

CAR MFDFILE=CAR ,SUFFIX=SQLDS ,$ SEGNAME=CAR ,SEGTYPE=S0 ,$ FIELD=COUNTRY ,COUNTRY ,A10 ,A10 ,MISSING=OFF,$ FIELD=CAR ,CARS ,A16 ,A16 ,MISSING=OFF,$ FIELD=MODEL ,MODEL ,A24 ,A24 ,MISSING=OFF,$ FIELD=BODYTYPE ,TYPE ,A12 ,A12 ,MISSING=OFF,$ FIELD=SEATS ,SEAT ,I3 ,I4 ,MISSING=OFF,$ FIELD=DEALER_COST ,DCOST ,D7 ,D8 ,MISSING=OFF,$ FIELD=RETAIL_COST ,RCOST ,D7 ,D8 ,MISSING=OFF,$ FIELD=SALES ,UNITS ,I6 ,I4 ,MISSING=OFF,$ FIELD=LENGTH ,LEN ,D5 ,D5 ,MISSING=OFF,$ FIELD=WIDTH ,WIDTH ,D5 ,D5 ,MISSING=OFF,$ FIELD=HEIGHT ,HEIGHT ,A2 ,A2 ,MISSING=OFF,$ FIELD=WHEELBASE ,BASE ,D6.1 ,D8 ,MISSING=OFF,$ FIELD=FUEL_CAP ,FUEL ,D6.1 ,D8 ,MISSING=OFF,$ FIELD=BHP ,POWER ,D6 ,D6 ,MISSING=OFF,$ FIELD=RPM ,RPM ,I5 ,I4 ,MISSING=OFF,$

ALIAS column should be the same name as the column name defined to the DB2 table

MISSING = OFF default value and should be used with NOT NULL columns in DB2MISSING = ON displays the FOCUS NODATA value for missing data

ACTUAL format is converted from the SQL Datatype: CHAR(n)=An, VARCHAR(n)=An, SMALLINT=I4, INTEGER=I4, DECIMAL=P, REAL=F4, FLOAT=D8,DATE=DATE . . .

Page 5: By: Meadow Heath. FOCUS to DB2 Define DB2 table to FOCUS How FOCUS processes a DB2 request FOCUS to DB2 Efficiencies.

CAR ACCESS File

SEGNAME= CAR ,TABLENAME= '”IBI".”CAR"' ,KEYS= 0 ,WRITE= YES ,$

SEGMENT associates the Master File with table it describes

WRITE=YES (default) specifies read and write access using MODIFY and MAINTAIN

WRITE=NO Read-only access using MODIFY and MAINTAIN

PRIMARY KEY must be defined (if there is one)

KYFLD and IXFLD would be included for multi-table structures -- used for dynamic JOINs.

ALLOCATION for the Access File is done in the FOCSQL libraryDYNAM ALLOC FILE FOCSQL DA {node}.FOCSQL.DATA

Page 6: By: Meadow Heath. FOCUS to DB2 Define DB2 table to FOCUS How FOCUS processes a DB2 request FOCUS to DB2 Efficiencies.

FOCUS to DB2 Processing

• High level diagram of process– FOCUS Request– DB2 Interface– Results

Page 7: By: Meadow Heath. FOCUS to DB2 Define DB2 table to FOCUS How FOCUS processes a DB2 request FOCUS to DB2 Efficiencies.

FOCUS Request

Programmer submits a FOCEXEC:

TABLE FILE CAR PRINT CAR MODEL DEALER_COST RETAIL_COST END

Page 8: By: Meadow Heath. FOCUS to DB2 Define DB2 table to FOCUS How FOCUS processes a DB2 request FOCUS to DB2 Efficiencies.

High Level Diagram of Process

FOCUS(Processing)

DB2Interface

(creates SQL) db2 request focexec

• Programmer executes FOCEXEC

• FOCUS parses request and passes to DB2 Interface

Page 9: By: Meadow Heath. FOCUS to DB2 Define DB2 table to FOCUS How FOCUS processes a DB2 request FOCUS to DB2 Efficiencies.

DB2 Interface

DB2 Interface translates the FOCEXECinto SQL code:

TABLE FILE CAR PRINT CAR MODEL DEALER_COST RETAIL_COST END

SQL:SELECT T1.CAR,T1.MODEL,T1.DCOST,T1.RCOST FROM CAR T1 FOR FETCH ONLY;

Page 10: By: Meadow Heath. FOCUS to DB2 Define DB2 table to FOCUS How FOCUS processes a DB2 request FOCUS to DB2 Efficiencies.

High Level Diagram of Process

FOCUS(Processing)

DB2Interface

(creates SQL)

RDBMS

Table Table

db2 request focexec

db2 results

sql

data • FOCUS parses request and passes to DB2 Interface

• DB2 Interface builds SQL & passes to RDBMS

• RDBMS retrieves data from DB2 table(s)

• RDBMS returns data to DB2 Interface

• FOCUS completes any process not handled by DB2

• Programmer executes FOCEXEC

results

• Results returned to programmer

Page 11: By: Meadow Heath. FOCUS to DB2 Define DB2 table to FOCUS How FOCUS processes a DB2 request FOCUS to DB2 Efficiencies.

Results

FOCEXEC:TABLE FILE CAR PRINT CAR MODEL DEALER_COST RETAIL_COST END

SQL:SELECT T1.CAR,T1.MODEL,T1.DCOST,T2RCOST FROM CAR T1 FOR FETCH ONLY;

RESULTS:CAR MODEL DEALER_COST RETAIL_COST--- ----- ----------- -----------JAGUAR V12XKE AUTO 7,427 8,878JAGUAR XJ12L AUTO 11,194 13,491JENSEN INTERCEPTOR III 14,940 17,850DATSUN B210 2 DOOR AUTO 2,626 3,139MASERATI DORA 2 DOOR 25,000 31,500...PEUGEOT 504 4 DOOR 4,631 5,610

Page 12: By: Meadow Heath. FOCUS to DB2 Define DB2 table to FOCUS How FOCUS processes a DB2 request FOCUS to DB2 Efficiencies.

FOCUS to DB2 Efficiencies

• Sorting Data

• Selection Criteria

• Data Calculations

• How to determine efficiency

Page 13: By: Meadow Heath. FOCUS to DB2 Define DB2 table to FOCUS How FOCUS processes a DB2 request FOCUS to DB2 Efficiencies.

Sorting Data

• Sorting Defined field

• Sorting on DB2 field

Page 14: By: Meadow Heath. FOCUS to DB2 Define DB2 table to FOCUS How FOCUS processes a DB2 request FOCUS to DB2 Efficiencies.

Sorting on Define fieldFOCEXEC:DEFINE FILE CAR NEW_NAME/A3 =EDIT(MODEL,'999'); END TABLE FILE CAR PRINT CAR BY NEW_NAME END

SQL:SELECT T1.CAR,T1.MODEL FROM CAR T1 FOR FETCH ONLY;

RESULTS:NEW_NAME CAR -------- --- B21 DATSUN COR TOYOTA DOR MASERATI ...530 BMW

NOTICE: Sort statement is not passed to DB2; FOCUS will have to sort the data before sending results back to the programmer.

Page 15: By: Meadow Heath. FOCUS to DB2 Define DB2 table to FOCUS How FOCUS processes a DB2 request FOCUS to DB2 Efficiencies.

Sorting on DB2 fieldFOCEXEC:DEFINE FILE CAR NEW_NAME/A3 =EDIT(MODEL,'999'); END TABLE FILE CAR PRINT NEW_NAME CAR BY MODEL NOPRINT END

SQL:SELECT T1.CAR,T1.MODEL FROM CAR T1 ORDER BY T1.MODEL FOR FETCH ONLY;

RESULTS:NEW_NAME CAR -------- --- B21 DATSUN COR TOYOTA DOR MASERATI ...530 BMW

NOTICE: ORDER BY statement is added to the SQL passed to DB2. DB2 will sort the data before returning results to FOCUS.

Page 16: By: Meadow Heath. FOCUS to DB2 Define DB2 table to FOCUS How FOCUS processes a DB2 request FOCUS to DB2 Efficiencies.

Selection Criteria

• Selecting from fields created with User-written subroutines

• Selecting from fields created with Edit feature

Page 17: By: Meadow Heath. FOCUS to DB2 Define DB2 table to FOCUS How FOCUS processes a DB2 request FOCUS to DB2 Efficiencies.

Selecting from fields created with User-written subroutines

FOCEXEC:DEFINE FILE CAR NEW_NAME/A3 =SUBSTR(24,MODEL,1,3,3,NEW_NAME); END TABLE FILE CAR PRINT CAR BY NEW_NAME WHERE NEW_NAME LT 'C' END

SQL:SELECT T1.CAR,T1.MODEL FROM CAR T1 FOR FETCH ONLY;

RESULTS:NEW_NAME CAR -------- --- B21 DATSUN

NOTICE: No selection criteria is passed to DB2; therefore, DB2 will pass all the data back, and FOCUS will have to complete the request.

Page 18: By: Meadow Heath. FOCUS to DB2 Define DB2 table to FOCUS How FOCUS processes a DB2 request FOCUS to DB2 Efficiencies.

Selecting from fields created with Edit Feature

FOCEXEC:DEFINE FILE CAR NEW_NAME/A3 =EDIT(MODEL,'999'); END TABLE FILE CAR PRINT CAR BY NEW_NAME WHERE NEW_NAME LT 'C' END

SQL:SELECT T1.CAR,T1.MODEL FROM CAR T1 WHERE ((SUBSTR(T1.MODEL,1,3)) < ‘C’) FOR FETCH ONLY;

RESULTS:NEW_NAME CAR -------- --- B21 DATSUN

NOTICE: WHERE NEW_NAME LT ‘C’ is translated by the DB2 Interface.

Page 19: By: Meadow Heath. FOCUS to DB2 Define DB2 table to FOCUS How FOCUS processes a DB2 request FOCUS to DB2 Efficiencies.

Data Calculations

• Calculations in a Compute

• Calculations in a Define

Page 20: By: Meadow Heath. FOCUS to DB2 Define DB2 table to FOCUS How FOCUS processes a DB2 request FOCUS to DB2 Efficiencies.

Calculations with ComputeFOCEXEC:TABLE FILE CAR SUM COMPUTE NEW_AMT/D7 =RETAIL_COST - DEALER_COST; BY CAR END

SQL:SELECT T1.CAR,SUM(T1.DCOST),SUM(T1.RCOST) FROM CAR T1 GROUP BY T1.CAR ORDER T1.CAR FOR FETCH ONLY;

RESULTS:CAR NEW_AMT --- ------- ALFA ROMEO 3,330 AUDI 907 BMW 9,262 DATSUN 513 JAGUAR 3,748 JENSEN 2,910 MASERATI 6,500 PEUGEOT 979 TOYOTA 453 TRIUMPH 808

NOTICE: NEW_AMT is not translated by the DB2 Interface; therefore, FOCUS does this calculation once all the data is retrieved from DB2.

Page 21: By: Meadow Heath. FOCUS to DB2 Define DB2 table to FOCUS How FOCUS processes a DB2 request FOCUS to DB2 Efficiencies.

Calculations in DefineFOCEXEC:DEFINE FILE CAR NEW_AMT/D7 =RETAIL_COST - DEALER_COST; END TABLE FILE CAR SUM NEW_AMT BY CAR END

SQL:SELECT T1.CAR, SUM((T1.RCOST - T1.DCOST)) FROM CAR T1GROUP BY T1.CAR ORDER BY T1.CAR FOR FETCH ONLY;

RESULTS:CAR NEW_AMT --- ------- ALFA ROMEO 3,330 AUDI 907 BMW 9,262 ..TRIUMPH 808

NOTICE: NEW_AMT is passed to DB2 to do the calculation.

Page 22: By: Meadow Heath. FOCUS to DB2 Define DB2 table to FOCUS How FOCUS processes a DB2 request FOCUS to DB2 Efficiencies.

How to determine efficiency

Test efficiency with FSTRACE4

FSTRACE4 shows the translation into SQL code

1) DYNAM ALLOC FILE FSTRACE4 *

(OR ALLOCATE TO A FILE)

2) Execute your FOCEXEC

3) Review FSTRACE4 to verify that the DB2 Translator converted your FOCEXEC into SQL code where possible

Page 23: By: Meadow Heath. FOCUS to DB2 Define DB2 table to FOCUS How FOCUS processes a DB2 request FOCUS to DB2 Efficiencies.

Summary

• Define DB2 table to FOCUS in the Master File Description and Access File Description

Page 24: By: Meadow Heath. FOCUS to DB2 Define DB2 table to FOCUS How FOCUS processes a DB2 request FOCUS to DB2 Efficiencies.

Define the DB2 table to FOCUS

Master File Description (MASTER)

FILE=CAR ,SUFFIX=SQLDS ,$ SEGNAME=CAR ,SEGTYPE=S0 ,$ FIELD=COUNTRY ,COUNTRY ,A10 ,A10 ,MISSING=OFF,$ FIELD=CAR ,CARS ,A16 ,A16 ,MISSING=OFF,$ FIELD=MODEL ,MODEL ,A24 ,A24 ,MISSING=OFF,$ . . . FIELD=RPM ,RPM ,I5 ,I4 ,MISSING=OFF,$

Access File Description (FOCSQL)

SEGNAME= CAR ,TABLENAME= '”IBI".”CAR"' ,KEYS= 0 ,WRITE= YES ,$

Page 25: By: Meadow Heath. FOCUS to DB2 Define DB2 table to FOCUS How FOCUS processes a DB2 request FOCUS to DB2 Efficiencies.

Summary

• Define DB2 table to FOCUS in the Master File Description and Access File Description

• The DB2 Translator translates the FOCEXEC into SQL code to be passed to the RDBMS

Page 26: By: Meadow Heath. FOCUS to DB2 Define DB2 table to FOCUS How FOCUS processes a DB2 request FOCUS to DB2 Efficiencies.

High Level Diagram of Process

FOCUS(Processing)

DB2Interface

(creates SQL)

RDBMS

Table Table

db2 request focexec

db2 results

sql

data • FOCUS parses request and passes to DB2 Interface

• DB2 Interface builds SQL & passes to RDBMS

• RDBMS retrieves data from DB2 table(s)

• RDBMS returns data to DB2 Interface

• FOCUS completes any process not handled by DB2

• Programmer executes FOCEXEC

results

• Results returned to programmer

Page 27: By: Meadow Heath. FOCUS to DB2 Define DB2 table to FOCUS How FOCUS processes a DB2 request FOCUS to DB2 Efficiencies.

Summary

• Define DB2 table to FOCUS in the Master File Description and Access File Description

• The DB2 Translator translates the FOCEXEC into SQL code to be passed to the RDBMS

• Write your FOCEXEC to be more efficient by making DB2 do most of the work

Page 28: By: Meadow Heath. FOCUS to DB2 Define DB2 table to FOCUS How FOCUS processes a DB2 request FOCUS to DB2 Efficiencies.

DB2 should do most of the work

• DB2 Translator should be able to convert your data processing into SQL code when:– Sorting Data – Selection Criteria– Data Calculations

• Test efficiency with FSTRACE4

Page 29: By: Meadow Heath. FOCUS to DB2 Define DB2 table to FOCUS How FOCUS processes a DB2 request FOCUS to DB2 Efficiencies.

Questions