debugging techniques walter f. blood technical director, focus division june, 2008

55
Debugging Techniques Walter F. Blood Technical Director, FOCUS Division June, 2008

Upload: alfonso-whitby

Post on 14-Dec-2015

245 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Debugging Techniques Walter F. Blood Technical Director, FOCUS Division June, 2008

Debugging Techniques

Walter F. Blood

Technical Director, FOCUS Division

June, 2008

Page 2: Debugging Techniques Walter F. Blood Technical Director, FOCUS Division June, 2008

FOCUS Debugging Techniques Agenda

When and Why? Debugging ItselfThe 5 Key Questions – General TechniquesReporting Issues - TABLEIntegrityCodePerformance

Page 3: Debugging Techniques Walter F. Blood Technical Director, FOCUS Division June, 2008

FOCUS Debugging TechniquesDebugging Itself

When will you need debugging?You don’t get the results you expectYour old report stops working in a new releaseYou get a FOCUS error message – FOCnnnYour report never comes back.Your systems person calls you to complain about your

activity.FOCUS abends or you get a -12 from the server.

Page 4: Debugging Techniques Walter F. Blood Technical Director, FOCUS Division June, 2008

FOCUS Debugging TechniquesDebugging Itself

What can you expect from debugging?To get the report working nowTo find a workaround for the problem if necessaryTo have the problem fixed by IBI if required

Page 5: Debugging Techniques Walter F. Blood Technical Director, FOCUS Division June, 2008

FOCUS Debugging TechniquesGeneral Techniques

The Five Key Questions1. Is the machine plugged in?

2. What is the first sign of trouble?

3. Can I make the problem occur with less code?

4. What is FOCUS actually doing?

5. What can FOCUS tell me?

Page 6: Debugging Techniques Walter F. Blood Technical Director, FOCUS Division June, 2008

FOCUS Debugging TechniquesGeneral Techniques

1. Is the machine plugged in?Check the obvious— Spelling and punctuation File existence FILEDEFs or ALLOCations Interface availability Security issues Sink Machine/FDS availability

Page 7: Debugging Techniques Walter F. Blood Technical Director, FOCUS Division June, 2008

TABLE FILE CARPRINT COUNTRY CAR MODEL ANDCOMPUTE SALES='$ ' | EDIT(SALES,'999$');END

TABLE FILE CARPRINT COUNTRY CAR MODEL ANDCOMPUTE SALES='$ ' | EDIT(SALES,'999$');END

TABLE FILE CARPRINT COUNTRY CAR MODEL ANDCOMPUTE SALES='$ ' | EDIT(SALES,'999$');END> ERROR AT OR NEAR LINE 3 IN PROCEDURE DBG1 FOCEXEC(FOC282) RESULT OF EXPRESSION IS NOT COMPATIBLE WITH THE FORMAT OF FIELD: SALES(FOC009) INCOMPLETE REQUEST STATEMENT BYPASSING TO END OF COMMAND>

TABLE FILE CARPRINT COUNTRY CAR MODEL ANDCOMPUTE SALES='$ ' | EDIT(SALES,'999$');END> ERROR AT OR NEAR LINE 3 IN PROCEDURE DBG1 FOCEXEC(FOC282) RESULT OF EXPRESSION IS NOT COMPATIBLE WITH THE FORMAT OF FIELD: SALES(FOC009) INCOMPLETE REQUEST STATEMENT BYPASSING TO END OF COMMAND>

FOCUS Debugging TechniquesGeneral Techniques

2. What is the first sign of trouble?FOCUS error message

Check description to determine nature of problem

Page 8: Debugging Techniques Walter F. Blood Technical Director, FOCUS Division June, 2008

FOCUS Debugging TechniquesGeneral Techniques

2. What is the first sign of trouble?FOCUS error message Multiple FOCUS error messages

SET ECHO ON;DEFINE FILE CARCONTINENT/A4=IF COUNTRY = FRANCE OR ENGLAND OR ITALY OR 'W GERMANY' THEN EUROPE ELSE ASIA;PROFIT/D12.2CML%=RETAIL_COST - DEALER_COST / DEALER_COST*100;ENDTABLE FILE CARSUM RETAIL_COST DEALER_COST PROFITBY CONTINENTBY COUNTRYON TABLE HOLD AS HOLDCAR FORMAT FOCUS INDEX COUNTRYEND-RUNTABLE FILE ABCHOLDPRINT SALES PROFIT BY CONTINENTEND

SET ECHO ON;DEFINE FILE CARCONTINENT/A4=IF COUNTRY = FRANCE OR ENGLAND OR ITALY OR 'W GERMANY' THEN EUROPE ELSE ASIA;PROFIT/D12.2CML%=RETAIL_COST - DEALER_COST / DEALER_COST*100;ENDTABLE FILE CARSUM RETAIL_COST DEALER_COST PROFITBY CONTINENTBY COUNTRYON TABLE HOLD AS HOLDCAR FORMAT FOCUS INDEX COUNTRYEND-RUNTABLE FILE ABCHOLDPRINT SALES PROFIT BY CONTINENTEND

Page 9: Debugging Techniques Walter F. Blood Technical Director, FOCUS Division June, 2008

FOCUS Debugging TechniquesGeneral Techniques

> (FOC209) THE DATA VALUE EXCEEDS ITS LENGTH SPECIFICATION: ECHO ON; ERROR AT OR NEAR LINE 3 IN PROCEDURE DBG2 FOCEXEC(FOC258) FIELDNAME OR COMPUTATIONAL ELEMENT NOT RECOGNIZED: FRANCE ERROR AT OR NEAR LINE 5 IN PROCEDURE DBG2 FOCEXEC(FOC253) INVALID FORMAT SPECIFICATION ON LEFT HAND SIDE: D12.2CML% ERROR AT OR NEAR LINE 8 IN PROCEDURE DBG2 FOCEXEC(FOC003) THE FIELDNAME IS NOT RECOGNIZED: PROFIT BYPASSING TO END OF COMMAND(FOC009) INCOMPLETE REQUEST STATEMENTERROR AT OR NEAR LINE 14 IN PROCEDURE DBG2 FOCEXEC(FOC205) THE DESCRIPTION CANNOT BE FOUND FOR FILE NAMED: ABCHOLD(FOC205) THE DESCRIPTION CANNOT BE FOUND FOR FILE NAMED: ABCHOLD BYPASSING TO END OF COMMAND

> (FOC209) THE DATA VALUE EXCEEDS ITS LENGTH SPECIFICATION: ECHO ON; ERROR AT OR NEAR LINE 3 IN PROCEDURE DBG2 FOCEXEC(FOC258) FIELDNAME OR COMPUTATIONAL ELEMENT NOT RECOGNIZED: FRANCE ERROR AT OR NEAR LINE 5 IN PROCEDURE DBG2 FOCEXEC(FOC253) INVALID FORMAT SPECIFICATION ON LEFT HAND SIDE: D12.2CML% ERROR AT OR NEAR LINE 8 IN PROCEDURE DBG2 FOCEXEC(FOC003) THE FIELDNAME IS NOT RECOGNIZED: PROFIT BYPASSING TO END OF COMMAND(FOC009) INCOMPLETE REQUEST STATEMENTERROR AT OR NEAR LINE 14 IN PROCEDURE DBG2 FOCEXEC(FOC205) THE DESCRIPTION CANNOT BE FOUND FOR FILE NAMED: ABCHOLD(FOC205) THE DESCRIPTION CANNOT BE FOUND FOR FILE NAMED: ABCHOLD BYPASSING TO END OF COMMAND

2. What is the first sign of trouble?FOCUS error message Multiple FOCUS error messages

FOCUS errors compoundSolve the earliest exposed problem first!

Page 10: Debugging Techniques Walter F. Blood Technical Director, FOCUS Division June, 2008

FOCUS Debugging TechniquesGeneral Techniques

2. What is the first sign of trouble?FOCUS error message Multiple FOCUS error messagesIncorrect or unexpected results

Work backwards from incorrect resultsLook for

Logic errorsIncorrect assumptionsFOCUS errors

Page 11: Debugging Techniques Walter F. Blood Technical Director, FOCUS Division June, 2008

FOCUS Debugging TechniquesGeneral Techniques

2. What is the first sign of trouble?FOCUS error message Multiple FOCUS error messagesIncorrect or unexpected results

PAGE 1

COUNTRY RETAIL_COST DEALER_COST PROFITMARGIN ------- ----------- ----------- ------------ ENGLAND 45,319 37,853 78 FRANCE 5,610 4,631 21 ITALY 51,065 41,235 88 JAPAN 6,478 5,512 35 W GERMANY 64,732 54,563 115

PAGE 1

COUNTRY RETAIL_COST DEALER_COST PROFITMARGIN ------- ----------- ----------- ------------ ENGLAND 45,319 37,853 78 FRANCE 5,610 4,631 21 ITALY 51,065 41,235 88 JAPAN 6,478 5,512 35 W GERMANY 64,732 54,563 115

DEFINE FILE CARPROFITMARGIN/D7=((RETAIL_COST - DEALER_COST)/DEALER_COST)*100;ENDTABLE FILE CARSUM RETAIL_COST DEALER_COST PROFITMARGINBY COUNTRYEND

DEFINE FILE CARPROFITMARGIN/D7=((RETAIL_COST - DEALER_COST)/DEALER_COST)*100;ENDTABLE FILE CARSUM RETAIL_COST DEALER_COST PROFITMARGINBY COUNTRYEND

Page 12: Debugging Techniques Walter F. Blood Technical Director, FOCUS Division June, 2008

FOCUS Debugging TechniquesGeneral Techniques

2. What is the first sign of trouble?FOCUS error message Multiple FOCUS error messagesIncorrect or unexpected results

TABLE FILE CARSUM RETAIL_COST DEALER_COST PROFITMARGINCOMPUTE PM/D7=((RETAIL_COST - DEALER_COST)/DEALER_COST)*100;BY COUNTRYEND

TABLE FILE CARSUM RETAIL_COST DEALER_COST PROFITMARGINCOMPUTE PM/D7=((RETAIL_COST - DEALER_COST)/DEALER_COST)*100;BY COUNTRYEND

PAGE 1

COUNTRY RETAIL_COST DEALER_COST PM------- ----------- ----------- --ENGLAND 45,319 37,853 20FRANCE 5,610 4,631 21ITALY 51,065 41,235 24JAPAN 6,478 5,512 18W GERMANY 64,732 54,563 19

PAGE 1

COUNTRY RETAIL_COST DEALER_COST PM------- ----------- ----------- --ENGLAND 45,319 37,853 20FRANCE 5,610 4,631 21ITALY 51,065 41,235 24JAPAN 6,478 5,512 18W GERMANY 64,732 54,563 19

Page 13: Debugging Techniques Walter F. Blood Technical Director, FOCUS Division June, 2008

FOCUS Debugging TechniquesGeneral Techniques

2. What is the first sign of trouble?FOCUS error message Multiple FOCUS error messagesIncorrect resultsAbend

Traces help identify FOCUS errorsDumps may be required

Page 14: Debugging Techniques Walter F. Blood Technical Director, FOCUS Division June, 2008

FOCUS Debugging TechniquesGeneral Techniques

2. What is the first sign of trouble?FOCUS error message

Check description to determine nature of problemMultiple FOCUS error messages

FOCUS errors compoundSolve the earliest exposed problem first!

Incorrect resultsWork backwards from incorrect resultsLook for FOCUS errors

Abend Traces help identify FOCUS errorsDumps may be required

Page 15: Debugging Techniques Walter F. Blood Technical Director, FOCUS Division June, 2008

FOCUS Debugging TechniquesGeneral Techniques

3. Will the problem occur with less code? Simplify the problem.

Remove code not related to the problemSegment code to facilitate testing

Problem:

User had a problem with a 7000+ line FOCEXEC.

Solution:

Use -GOTO in Dialogue Manager, and GOTO in MODIFY, to skip blocks of code.

Checkpoint and rerun from last successful step.

Problem:

User had a problem with a 7000+ line FOCEXEC.

Solution:

Use -GOTO in Dialogue Manager, and GOTO in MODIFY, to skip blocks of code.

Checkpoint and rerun from last successful step.

Page 16: Debugging Techniques Walter F. Blood Technical Director, FOCUS Division June, 2008

TABLE FILE ABCSUM F1 F2 F3/A4 FST.F4BY S1 NOPRINTBY S2 BY HIGHEST 3 S3 SUBTOTAL PLUS-OTHERSWHERE ((W1 GE W2 AND W1 LE W3) AND (W4 LT W5 OR W6 LT W7)) OR (W5*24 GE W9 +W1);ON S1 SUBHEAD“ “TOTALS FOR <S1 “ “ON TABLE HOLD AS ABCOUT FORMAT PDFON TABLE SET STYLE *TYPE = REPORT, …ENDSTYLEEND

TABLE FILE ABCSUM F1 F2 F3/A4 FST.F4BY S1 NOPRINTBY S2 BY HIGHEST 3 S3 SUBTOTAL PLUS-OTHERSWHERE ((W1 GE W2 AND W1 LE W3) AND (W4 LT W5 OR W6 LT W7)) OR (W5*24 GE W9 +W1);ON S1 SUBHEAD“ “TOTALS FOR <S1 “ “ON TABLE HOLD AS ABCOUT FORMAT PDFON TABLE SET STYLE *TYPE = REPORT, …ENDSTYLEEND

TABLE FILE ABCSUM F1 F2 F3/A4 FST.F4BY S1 NOPRINTBY S2 BY HIGHEST 3 S3 SUBTOTAL PLUS-OTHERSWHERE ((W1 GE W2 AND W1 LE W3) AND (W4 LT W5 OR W6 LT W7)) OR (W5*24 GE W9 +W1);ON S1 SUBHEAD“ “TOTALS FOR <S1 “ “ON TABLE HOLD AS ABCOUT FORMAT PDF END

TABLE FILE ABCSUM F1 F2 F3/A4 FST.F4BY S1 NOPRINTBY S2 BY HIGHEST 3 S3 SUBTOTAL PLUS-OTHERSWHERE ((W1 GE W2 AND W1 LE W3) AND (W4 LT W5 OR W6 LT W7)) OR (W5*24 GE W9 +W1);ON S1 SUBHEAD“ “TOTALS FOR <S1 “ “ON TABLE HOLD AS ABCOUT FORMAT PDF END

TABLE FILE ABCSUM F1 F2 F3/A4 FST.F4BY S1 NOPRINTBY S2 BY HIGHEST 3 S3 SUBTOTAL PLUS-OTHERSWHERE ((W1 GE W2 AND W1 LE W3) AND (W4 LT W5 OR W6 LT W7)) OR (W5*24 GE W9 +W1); ON TABLE HOLD AS ABCOUT FORMAT PDF END

TABLE FILE ABCSUM F1 F2 F3/A4 FST.F4BY S1 NOPRINTBY S2 BY HIGHEST 3 S3 SUBTOTAL PLUS-OTHERSWHERE ((W1 GE W2 AND W1 LE W3) AND (W4 LT W5 OR W6 LT W7)) OR (W5*24 GE W9 +W1); ON TABLE HOLD AS ABCOUT FORMAT PDF END

TABLE FILE ABCSUM F1 F2 F3/A4 FST.F4BY S1 NOPRINTBY S2 BY HIGHEST 3 S3 WHERE ((W1 GE W2 AND W1 LE W3) AND (W4 LT W5 OR W6 LT W7)) OR (W5*24 GE W9 +W1); ON TABLE HOLD AS ABCOUT FORMAT PDF END

TABLE FILE ABCSUM F1 F2 F3/A4 FST.F4BY S1 NOPRINTBY S2 BY HIGHEST 3 S3 WHERE ((W1 GE W2 AND W1 LE W3) AND (W4 LT W5 OR W6 LT W7)) OR (W5*24 GE W9 +W1); ON TABLE HOLD AS ABCOUT FORMAT PDF END

TABLE FILE ABCSUM F1 F2 F3/A4 FST.F4BY S1 NOPRINTBY S2 BY HIGHEST 3 S3 ON TABLE HOLD AS ABCOUT FORMAT PDF END

TABLE FILE ABCSUM F1 F2 F3/A4 FST.F4BY S1 NOPRINTBY S2 BY HIGHEST 3 S3 ON TABLE HOLD AS ABCOUT FORMAT PDF END

TABLE FILE ABCSUM F1 F2 F3/A4 FST.F4BY S1 NOPRINTBY S2 BY HIGHEST 3 S3

END

TABLE FILE ABCSUM F1 F2 F3/A4 FST.F4BY S1 NOPRINTBY S2 BY HIGHEST 3 S3

END

FOCUS Debugging TechniquesGeneral Techniques

Remove code until problem disappears

TABLE FILE ABCSUM F1 F2 F3/A4 FST.F4BY S1 NOPRINTBY S2 BY HIGHEST 3 S3 SUBTOTAL PLUS-OTHERSWHERE ((W1 GE W2 AND W1 LE W3) AND (W4 LT W5 OR W6 LT W7)) OR (W5*24 GE W9 +W1);ON S1 SUBHEAD“ “TOTALS FOR <S1 “ “ON TABLE HOLD AS ABCOUT FORMAT PDFON TABLE SET STYLE *TYPE = REPORT, …ENDSTYLEEND

TABLE FILE ABCSUM F1 F2 F3/A4 FST.F4BY S1 NOPRINTBY S2 BY HIGHEST 3 S3 SUBTOTAL PLUS-OTHERSWHERE ((W1 GE W2 AND W1 LE W3) AND (W4 LT W5 OR W6 LT W7)) OR (W5*24 GE W9 +W1);ON S1 SUBHEAD“ “TOTALS FOR <S1 “ “ON TABLE HOLD AS ABCOUT FORMAT PDFON TABLE SET STYLE *TYPE = REPORT, …ENDSTYLEEND

Page 17: Debugging Techniques Walter F. Blood Technical Director, FOCUS Division June, 2008

FOCUS Debugging TechniquesGeneral Techniques

Segment TABLE request to isolate the problem

-DEFAULTS START=STEP1, STOP=STEP99,ECHO=OFF-SET ECHO=&ECHO;-GOTO &START-STEP1TABLE FILE … lots of code-GOTO NOSTYON TABLE SET STYLE *TYPE = REPORT, …ENDSTYLE-NOSTYEND

-DEFAULTS START=STEP1, STOP=STEP99,ECHO=OFF-SET ECHO=&ECHO;-GOTO &START-STEP1TABLE FILE … lots of code-GOTO NOSTYON TABLE SET STYLE *TYPE = REPORT, …ENDSTYLE-NOSTYEND

Page 18: Debugging Techniques Walter F. Blood Technical Director, FOCUS Division June, 2008

FOCUS Debugging TechniquesGeneral Techniques

MODIFY FILE …GOTO TWOCASE ONE…ENDCASECASE TWO…ON MATCH/NOMATCH GOTO ENDENDCASECASE THREE…ENDCASEDATA END

MODIFY FILE …GOTO TWOCASE ONE…ENDCASECASE TWO…ON MATCH/NOMATCH GOTO ENDENDCASECASE THREE…ENDCASEDATA END

Use GOTO to exclude MODIFY cases

Page 19: Debugging Techniques Walter F. Blood Technical Director, FOCUS Division June, 2008

FOCUS Debugging TechniquesGeneral Techniques

4. What is FOCUS/WebFOCUS actually doing? Expose what is happening. In TABLE:

Use LET NOPRINT = ; to show complete requestUse SET DEFECHO to show variable substitutionUse –TYPE to expose system variable values

LET NOPRINT = ;TABLE FILE CARSUM RETAIL_COSTBY COUNTRY NOPRINT…

LET NOPRINT = ;TABLE FILE CARSUM RETAIL_COSTBY COUNTRY NOPRINT…

SET DEFECHO=ALLTABLE FILE CARSUM …WHERE COUNTRY EQ &VAR1…

SET DEFECHO=ALLTABLE FILE CARSUM …WHERE COUNTRY EQ &VAR1…

TABLE FILE CAR…END-RUN-TYPE RECORDS &RECORDS

TABLE FILE CAR…END-RUN-TYPE RECORDS &RECORDS

Page 20: Debugging Techniques Walter F. Blood Technical Director, FOCUS Division June, 2008

FOCUS Debugging TechniquesGeneral Techniques

4. What is FOCUS/WebFOCUS actually doing? Expose what is happening. In MODIFY:

Use MODIFY FILE xxx TRACE to locate CASE Use TYPE IN CASE xxx to indicate position inside case

**** START OF TRACE ****TRACE ===> AT CASE TOPDATA FOR TRANSACTION 1EMP_ID => 112847612CURR_SAL => 67000TRACE ===> AT CASE HIGHSALYOU ENTERED A SALARY ABOVE $50000…

**** START OF TRACE ****TRACE ===> AT CASE TOPDATA FOR TRANSACTION 1EMP_ID => 112847612CURR_SAL => 67000TRACE ===> AT CASE HIGHSALYOU ENTERED A SALARY ABOVE $50000…

MODIFY FILE EMPLOYEE…CASE ONETYPE IN CASE ONE MATCH EMP_ID TYPE AFTER MATCHON MATCH UPDATE CURR_SAL

MODIFY FILE EMPLOYEE…CASE ONETYPE IN CASE ONE MATCH EMP_ID TYPE AFTER MATCHON MATCH UPDATE CURR_SAL

Page 21: Debugging Techniques Walter F. Blood Technical Director, FOCUS Division June, 2008

FOCUS Debugging TechniquesGeneral Techniques

4. What is FOCUS/WebFOCUS actually doing? Expose what is happening. In Dialogue Manager:

Use SET &ECHO and SET DEFECHO to expose the actual flow of commands

Use –TYPE to expose local and global variables

-DEFAULT &TEST = OFF

SET PRINTPLUS = ON

-RUN

-? SET PRINTPLUS &PRINTPLUS

-SET &EVT = IF TEST EQ ‘OFF’ THEN ‘*’ ELSE ‘TYPE’;

-&EVT.EVAL VALUE OF PRINTPLUS IS &PRINTPLUS

-DEFAULT &TEST = OFF

SET PRINTPLUS = ON

-RUN

-? SET PRINTPLUS &PRINTPLUS

-SET &EVT = IF TEST EQ ‘OFF’ THEN ‘*’ ELSE ‘TYPE’;

-&EVT.EVAL VALUE OF PRINTPLUS IS &PRINTPLUS

SET DEFECHO=ALL-SET &ECHO=ON…EX pgm2 ECHO=&ECHO

SET DEFECHO=ALL-SET &ECHO=ON…EX pgm2 ECHO=&ECHO

Page 22: Debugging Techniques Walter F. Blood Technical Director, FOCUS Division June, 2008

FOCUS Debugging TechniquesGeneral Techniques

4. What is FOCUS/WebFOCUS actually doing? Expose what is happening. In SQL Translator:

Use ECHO to show the generate FOCUS code Use FILE nnn to create focexec with FOCUS code

SQLSELECT BODYTYPE, AVG(MPG), SUM(SALES)FROM CARWHERE RETAIL_COST > 5000GROUP BY BODYTYPE;ECHOTABLEEND

SQLSELECT BODYTYPE, AVG(MPG), SUM(SALES)FROM CARWHERE RETAIL_COST > 5000GROUP BY BODYTYPE;ECHOTABLEEND

> SET COUNTWIDTH=ON-SET SQLERRNUM = 0;TABLE FILE CARWRITE MIN.BODYTYPE AS 'BODYTYPE' AVE.MPG SUM.SALES BY BODYTYPE NOPRINT WHERE ( RETAIL_COST GT 5000 ) ;ON TABLE SET CARTESIAN ONON TABLE SET ASNAMES ONON TABLE SET HOLDLIST PRINTONLYEND-RUN

> SET COUNTWIDTH=ON-SET SQLERRNUM = 0;TABLE FILE CARWRITE MIN.BODYTYPE AS 'BODYTYPE' AVE.MPG SUM.SALES BY BODYTYPE NOPRINT WHERE ( RETAIL_COST GT 5000 ) ;ON TABLE SET CARTESIAN ONON TABLE SET ASNAMES ONON TABLE SET HOLDLIST PRINTONLYEND-RUN

Page 23: Debugging Techniques Walter F. Blood Technical Director, FOCUS Division June, 2008

FOCUS Debugging TechniquesGeneral Techniques

4. What is FOCUS/WebFOCUS actually doing? Expose what is happening. With Interfaces:

Use SET XRETRIEVAL=OFF to suppress data access

SET XRETRIEVAL=OFFTABLE FILE DB2FILESUM RETAIL_COST DEALER COSTBY COUNTRY WHERE SALES GT 5000END

SET XRETRIEVAL=OFFTABLE FILE DB2FILESUM RETAIL_COST DEALER COSTBY COUNTRY WHERE SALES GT 5000END

...RETRIEVAL KILLED NUMBER OF RECORDS IN TABLE= 0 LINES= 0

...RETRIEVAL KILLED NUMBER OF RECORDS IN TABLE= 0 LINES= 0

Page 24: Debugging Techniques Walter F. Blood Technical Director, FOCUS Division June, 2008

FOCUS Debugging TechniquesGeneral Techniques

4. What is FOCUS/WebFOCUS actually doing? Expose what is happening. With Interfaces:

Use SET XRETRIEVAL=OFF to suppress data accessUse Traces to expose interface activity

SET TRACEUSER=ONSET TRACEOFF=ALLSET TRACEON=STMTRACE/CLIENT SET TRACEON=STMTRACE/FSTRACE

SET TRACEUSER=ONSET TRACEOFF=ALLSET TRACEON=STMTRACE/CLIENT SET TRACEON=STMTRACE/FSTRACE

SQLDI - Records SQL, RDBMS return codes, cursor operations SQLAGGR - Displays data adapter-to-RDBMS aggregation & join analysis STMTRACE - SQL generated by the data adapter, Direct SQL Passthru

SQLDI - Records SQL, RDBMS return codes, cursor operations SQLAGGR - Displays data adapter-to-RDBMS aggregation & join analysis STMTRACE - SQL generated by the data adapter, Direct SQL Passthru

Page 25: Debugging Techniques Walter F. Blood Technical Director, FOCUS Division June, 2008

01 S1***************EMP_ID ***LAST_NAME ***FIRST_NAME ***HIRE_DATE *** ******************************* I +-----------------+-----------------+-----------------+-----------------+ I I I I I I FUNDTRAN I PAYINFO I ADDRESS I SALINFO I ATTNDSEG02 I U 03 I SH1 07 I S1 08 I SH1 10 I KM************** ************** ************** ************** ..............*BANK_NAME * *DAT_INC ** *TYPE ** *PAY_DATE ** :DATE_ATTEND ::*BANK_CODE * *PCT_INC ** *ADDRESS_LN1 ** *GROSS ** :EMP_ID ::K*BANK_ACCT * *SALARY ** *ADDRESS_LN2 ** * ** : ::*EFFECT_DATE * *JOBCODE ** *ADDRESS_LN3 ** * ** : ::* * * ** * ** * ** : ::************** *************** *************** *************** :............:: ************** ************** ************** .............:

01 S1***************EMP_ID ***LAST_NAME ***FIRST_NAME ***HIRE_DATE *** ******************************* I +-----------------+-----------------+-----------------+-----------------+ I I I I I I FUNDTRAN I PAYINFO I ADDRESS I SALINFO I ATTNDSEG02 I U 03 I SH1 07 I S1 08 I SH1 10 I KM************** ************** ************** ************** ..............*BANK_NAME * *DAT_INC ** *TYPE ** *PAY_DATE ** :DATE_ATTEND ::*BANK_CODE * *PCT_INC ** *ADDRESS_LN1 ** *GROSS ** :EMP_ID ::K*BANK_ACCT * *SALARY ** *ADDRESS_LN2 ** * ** : ::*EFFECT_DATE * *JOBCODE ** *ADDRESS_LN3 ** * ** : ::* * * ** * ** * ** : ::************** *************** *************** *************** :............:: ************** ************** ************** .............:

FOCUS Debugging TechniquesGeneral Techniques

5. What can FOCUS tell me?Use CHECK FILE to determine PATHs if you get --

FOC144 – Testing on independent paths of dataFOC030 -- All verb objects must be in the

same path as their sort fields

CHECK FILE EMPLOYEE PICTURECHECK FILE EMPLOYEE PICTURE

Page 26: Debugging Techniques Walter F. Blood Technical Director, FOCUS Division June, 2008

FOCUS Debugging TechniquesGeneral Techniques

5. What can FOCUS tell me?Use CHECK FILE HOLD to determine PATHs if you get --

CHECK FILE EMPLOYEE HOLDCHECK FILE EMPLOYEE HOLD

FILE=FOCMAST,SUFFIX=FIX,$ SEGMENT=FILEATTR,$ FIELD=RECTYPE,FLE,A4,A4,$ FIELD=FILENAME,FILN64,A64,A64,$ FIELD=SUFFIX,FILN34,A8,A8,$ ….SEGMENT=SEGATTR,PARENT=FILEATTR,$ FIELD=RECTYPE,SEG,A4,A4,$ FIELD=SEGNO,SEGNUM,I2S,I4,$ FIELD=LEVEL,LLEVEL1,I2S,I2,$ ….SEGMENT=FLDATTR,PARENT=SEGATTR,$ FIELD=RECTYPE,FLD,A4,A4,$ FIELD=FLDNO,FLDNUM,I4S,I4,$ FIELD=FIELDNAME,FIELD,A66 ,A66 ,$

FILE=FOCMAST,SUFFIX=FIX,$ SEGMENT=FILEATTR,$ FIELD=RECTYPE,FLE,A4,A4,$ FIELD=FILENAME,FILN64,A64,A64,$ FIELD=SUFFIX,FILN34,A8,A8,$ ….SEGMENT=SEGATTR,PARENT=FILEATTR,$ FIELD=RECTYPE,SEG,A4,A4,$ FIELD=SEGNO,SEGNUM,I2S,I4,$ FIELD=LEVEL,LLEVEL1,I2S,I2,$ ….SEGMENT=FLDATTR,PARENT=SEGATTR,$ FIELD=RECTYPE,FLD,A4,A4,$ FIELD=FLDNO,FLDNUM,I4S,I4,$ FIELD=FIELDNAME,FIELD,A66 ,A66 ,$

TABLE FILE HOLDPRINT SEGNAME SEGNO FIELDNAME/A30PATHWHERE FIELDNAME EQ …..END

TABLE FILE HOLDPRINT SEGNAME SEGNO FIELDNAME/A30PATHWHERE FIELDNAME EQ …..END

Page 27: Debugging Techniques Walter F. Blood Technical Director, FOCUS Division June, 2008

FOCUS Debugging TechniquesGeneral Techniques

5. What can FOCUS tell me? Use FOCUS Query Facilities to find hidden conditions

? FILEDEF - Check for expected file allocations

? TSO DDNAME – Check the

file characteristics? TSO DDNAME MULTVOLDDNAME = MULTVOLDSNAME = USER1.FOCTST.MULTVOLDISP = NEWDEVICE = DISKVOLSER = MFOC02,MFOC01DSORG = PSRECFM = FSECONDARY = 4ALLOCATION = TRACKSBLKSIZE = 4096LRECL = 4096TRKTOT = 92EXTENTSUSED = 23BLKSPERTRK = 12TRKSPERCYL = 15CYLSPERDISK = 2227BLKSWRITTEN = 1104FOCUSPAGES = 1059

? TSO DDNAME MULTVOLDDNAME = MULTVOLDSNAME = USER1.FOCTST.MULTVOLDISP = NEWDEVICE = DISKVOLSER = MFOC02,MFOC01DSORG = PSRECFM = FSECONDARY = 4ALLOCATION = TRACKSBLKSIZE = 4096LRECL = 4096TRKTOT = 92EXTENTSUSED = 23BLKSPERTRK = 12TRKSPERCYL = 15CYLSPERDISK = 2227BLKSWRITTEN = 1104FOCUSPAGES = 1059

Page 28: Debugging Techniques Walter F. Blood Technical Director, FOCUS Division June, 2008

FOCUS Debugging TechniquesGeneral Techniques

5. What can FOCUS tell me? Use FOCUS Query Facilities to find hidden conditions

? LET – Find active alternative command meanings

Identify deactivated commands

Identify abbreviated commands

Validate your commands

? LET

OTH ON TABLE HOLD AS PR PRINT S SUM TF TABLE FILESCAN END>

? LET

OTH ON TABLE HOLD AS PR PRINT S SUM TF TABLE FILESCAN END>

Page 29: Debugging Techniques Walter F. Blood Technical Director, FOCUS Division June, 2008

FOCUS Debugging TechniquesGeneral Techniques

5. What can FOCUS tell me? Use FOCUS Query Facilities to find hidden conditions

? DEFINE [filename]

Show virtual fields available – focexec/master

Identify unexpected duplicates

Validate type, length and source

? DEFINEFILE FIELD NAME FORMAT SEGMENT VIEW TYPEEMPLOYEE FCONCAT A26 1 MASTEREMPLOYEE FARITH I9S 2 MASTEREMPLOYEE FIFTHEN I1 1 MASTERCAR PROFIT D12.2 4CAR MARGIN D5.2 4CAR CONTINENT A10 1EMPLOYEE WKSAL D12.2 1

? DEFINEFILE FIELD NAME FORMAT SEGMENT VIEW TYPEEMPLOYEE FCONCAT A26 1 MASTEREMPLOYEE FARITH I9S 2 MASTEREMPLOYEE FIFTHEN I1 1 MASTERCAR PROFIT D12.2 4CAR MARGIN D5.2 4CAR CONTINENT A10 1EMPLOYEE WKSAL D12.2 1

Page 30: Debugging Techniques Walter F. Blood Technical Director, FOCUS Division June, 2008

FOCUS Debugging TechniquesGeneral Techniques

5. What can FOCUS tell me? Use FOCUS Query Facilities to find hidden conditions

? USE – Display file usage including SU/FDS usage

Check file concatenation

Verify read/write status

? USE DIRECTORIES IN USE ARE: CAR FOCUS A CAR1 FOCUS A AS CAR CAR2 FOCUS A AS CAR EMPLOYEE FOCUS A ON SINK1 JOBFILE FOCUS A READ>

? USE DIRECTORIES IN USE ARE: CAR FOCUS A CAR1 FOCUS A AS CAR CAR2 FOCUS A AS CAR EMPLOYEE FOCUS A ON SINK1 JOBFILE FOCUS A READ>

Page 31: Debugging Techniques Walter F. Blood Technical Director, FOCUS Division June, 2008

FOCUS Debugging TechniquesGeneral Techniques

5. What can FOCUS tell me? Use FOCUS Query Facilities to find hidden conditions

? SET - Display most common parameters and values

? SET ALL - Display all parameters and values

? SET <parameter> - Display single parameter and value

? SET FOR <parameter> – Display allowed set contexts

Display FOCUS settings in effectCheck for expected settings at time of errorCheck when using ON TABLE SETPROFILEs change them, cumulative effect

Page 32: Debugging Techniques Walter F. Blood Technical Director, FOCUS Division June, 2008

FOCUS Debugging TechniquesGeneral Techniques

5. What can FOCUS tell me? ? SET PARAMETER SETTINGS

ALL. OFF FOCALLOC OFF PRINTPLUS OFF ASNAMES FOCUS FOCCREATELOC OFF QUALCHAR . AUTOINDEX ON FOCSTACK SIZE 8 QUALTITLES OFF AUTOPATH ON FOCTRANSFORM OFF REBUILDMSG 1000 BINS 64 FOC2GIGDB OFF RECAP-COUNT OFF BLKCALC NEW HDAY SAVEMATRIX OFF BUSDAYS _MTWTF_ HIPERFOCUS OFF SCREEN ON BYPANELING OFF HOLDATTRS FOCUS SHADOW PAGE OFF CACHE 0 HOLDLIST ALL SMARTMODE OFF CARTESIAN OFF HOLDSTAT OFF SPACES AUTO

CDN OFF HOTMENU OFF SQLENGINE COLUMNSCROLL OFF IBMLE ON SUMPREFIX LST DATEDISPLAY OFF INDEX TYPE NEW TCPIPINT OFF DATEFNS ON LANGUAGE AMENGLISH TEMP DISK Z DATETIME STARTUP/RESET LINES/PAGE 66 TERMINAL IBM3270 DEFCENT 19 LINES/PRINT 57 TESTDATE TODAY DEFECHO OFF MESSAGE ON TITLES ON EMPTYREPORT OFF MODE CMS VIEWNAMESIZE 18 EXCELRELEASE 2000 MULTIPATH SIMPLE WIDTH 130 EXL2KLANG 1 NODATA . WINPFKEY OLD

MORE... IBIVM

PARAMETER SETTINGS

ALL. OFF FOCALLOC OFF PRINTPLUS OFF ASNAMES FOCUS FOCCREATELOC OFF QUALCHAR . AUTOINDEX ON FOCSTACK SIZE 8 QUALTITLES OFF AUTOPATH ON FOCTRANSFORM OFF REBUILDMSG 1000 BINS 64 FOC2GIGDB OFF RECAP-COUNT OFF BLKCALC NEW HDAY SAVEMATRIX OFF BUSDAYS _MTWTF_ HIPERFOCUS OFF SCREEN ON BYPANELING OFF HOLDATTRS FOCUS SHADOW PAGE OFF CACHE 0 HOLDLIST ALL SMARTMODE OFF CARTESIAN OFF HOLDSTAT OFF SPACES AUTO

CDN OFF HOTMENU OFF SQLENGINE COLUMNSCROLL OFF IBMLE ON SUMPREFIX LST DATEDISPLAY OFF INDEX TYPE NEW TCPIPINT OFF DATEFNS ON LANGUAGE AMENGLISH TEMP DISK Z DATETIME STARTUP/RESET LINES/PAGE 66 TERMINAL IBM3270 DEFCENT 19 LINES/PRINT 57 TESTDATE TODAY DEFECHO OFF MESSAGE ON TITLES ON EMPTYREPORT OFF MODE CMS VIEWNAMESIZE 18 EXCELRELEASE 2000 MULTIPATH SIMPLE WIDTH 130 EXL2KLANG 1 NODATA . WINPFKEY OLD

MORE... IBIVM

? SET <parameter? SET HOLDLIST HOLDLIST ALL

>

? SET HOLDLIST HOLDLIST ALL

>

? SET FOR <parameter

? SET FOR PRINTPLUS PRINTPLUS OFF

------------------------------------------------- SETTABLE FROM COMMAND LINE : YES SETTABLE ON TABLE : NO SETTABLE FROM SYSTEM-WIDE PROFILE : YES SETTABLE FROM HLI PROFILE : YES POOL TABLE BOUNDARY : NO

? SET FOR PRINTPLUS PRINTPLUS OFF

------------------------------------------------- SETTABLE FROM COMMAND LINE : YES SETTABLE ON TABLE : NO SETTABLE FROM SYSTEM-WIDE PROFILE : YES SETTABLE FROM HLI PROFILE : YES POOL TABLE BOUNDARY : NO

Page 33: Debugging Techniques Walter F. Blood Technical Director, FOCUS Division June, 2008

FOCUS Debugging TechniquesGeneral Techniques

5. What can FOCUS tell me? Use FOCUS Query Facilities to find hidden conditions

? && - Global variables in effect and their values

Check that the values are expected

Unexpected values can point to other focexecs

&Vars can be seen with -? &var

Insert into focexec followed by -RUN

? && &&ECHO OFF &&MAXIMUM 123456789 &&MINIMUN 100000000 &&ONE FIRST>

? && &&ECHO OFF &&MAXIMUM 123456789 &&MINIMUN 100000000 &&ONE FIRST>

Page 34: Debugging Techniques Walter F. Blood Technical Director, FOCUS Division June, 2008

FOCUS Debugging TechniquesGeneral Techniques

5. What can FOCUS tell me? Use FOCUS Query Facilities to find hidden conditions

? JOIN - List JOINs in effect

Verify the path generated by multiple JOINs

Check JOIN details

? JOIN JOINS CURRENTLY ACTIVE

HOST CROSSREFERENCEFIELD FILE TAG FIELD FILE TAG AS ALL WH----- ---- --- ----- ---- --- -- --- --COUNTRY CAR COUNTRY CONTNENT J1 N NJOBCODE EMPLOYEE JOBCODE JOBFILE J2 N NID_NUM SALES EMP_ID EDUCFILE J3 Y NBODYTYPE CAR EMP_ID EMPLOYEE J4 Y Y>

? JOIN JOINS CURRENTLY ACTIVE

HOST CROSSREFERENCEFIELD FILE TAG FIELD FILE TAG AS ALL WH----- ---- --- ----- ---- --- -- --- --COUNTRY CAR COUNTRY CONTNENT J1 N NJOBCODE EMPLOYEE JOBCODE JOBFILE J2 N NID_NUM SALES EMP_ID EDUCFILE J3 Y NBODYTYPE CAR EMP_ID EMPLOYEE J4 Y Y>

Page 35: Debugging Techniques Walter F. Blood Technical Director, FOCUS Division June, 2008

FOCUS Debugging TechniquesGeneral Techniques

5. What can FOCUS tell me? Use FOCUS Query Facilities to find hidden conditions

? FILTER – Show filters in effect

Display active hidden screening conditions

Validate total screening being done

If filtering used as DBA, check user access

? FILTERSET FILE FILTER NAME DESCRIPTION--- -------- ----------- --------------------------------- CAR HIMARGIN CAR MDMARGIN* CAR LOMARGIN

? FILTERSET FILE FILTER NAME DESCRIPTION--- -------- ----------- --------------------------------- CAR HIMARGIN CAR MDMARGIN* CAR LOMARGIN

Page 36: Debugging Techniques Walter F. Blood Technical Director, FOCUS Division June, 2008

FOCUS Debugging TechniquesGeneral Techniques

5. What can FOCUS tell me? Use FOCUS Query Facilities to find hidden conditions

? COMBINE – Display files grouped together for MODIFY

? LOAD – Display focexecs compiled and loaded into memory

Validate that compiled environment is the same as the run environment

Check JOINs, ALLOCs and FILEDEFs

? COMBINE FILE=ALLONE TAG PREFIX

CAR EMPLOYEE JOBFILE EDUCFILE

? COMBINE FILE=ALLONE TAG PREFIX

CAR EMPLOYEE JOBFILE EDUCFILE

Page 37: Debugging Techniques Walter F. Blood Technical Director, FOCUS Division June, 2008

FOCUS Debugging TechniquesGeneral Techniques

5. What can FOCUS tell me? Use FOCUS Query Facilities to find hidden conditions

? STYLE – Style settings currently in effect? STYLE ONLINE-FMT OFFLINE-FMT STANDARD

STYLESHEET ON SQUEEZE OFF PAGESIZE Letter ORIENTATION PORTRAIT UNITS INCHES LABELPROMPT OFF LEFTMARGIN .250 RIGHTMARGIN .250 TOPMARGIN .250 BOTTOMMARGIN .250 STYLEMODE FULL TARGETFRAME FOCEXURL BASEURL

? STYLE ONLINE-FMT OFFLINE-FMT STANDARD

STYLESHEET ON SQUEEZE OFF PAGESIZE Letter ORIENTATION PORTRAIT UNITS INCHES LABELPROMPT OFF LEFTMARGIN .250 RIGHTMARGIN .250 TOPMARGIN .250 BOTTOMMARGIN .250 STYLEMODE FULL TARGETFRAME FOCEXURL BASEURL

Page 38: Debugging Techniques Walter F. Blood Technical Director, FOCUS Division June, 2008

FOCUS Debugging TechniquesGeneral Techniques

5. What can FOCUS tell me? Use FOCUS Query Facilities to find hidden conditions

? FILE <focusfile> - Current state of the FOCUS file

STATUS OF FOCUS FILE: CAR FOCUS A ON 04/24/2008 AT 13.04.48 ACTIVE DELETED DATE OF TIME OF LAST TRANSSEGNAME COUNT COUNT LAST CHG LAST CHG NUMBER

ORIGIN 5 04/10/2008 12.02.45 99COMP 10 04/10/2008 12.02.45 99CARREC 18 04/10/2008 12.02.45 99BODY 18 04/10/2008 12.02.45 99SPECS 18 04/10/2008 12.02.45 99WARANT 8 04/10/2008 12.02.45 99EQUIP 25 04/10/2008 12.02.45 99*INDEXES*COUNTRY 04/10/2008 12.02.45 99TOTAL SEGS 102TOTAL CHAR 3988TOTAL PAGES 8LAST CHANGE 04/10/2008 12.02.45 99

STATUS OF FOCUS FILE: CAR FOCUS A ON 04/24/2008 AT 13.04.48 ACTIVE DELETED DATE OF TIME OF LAST TRANSSEGNAME COUNT COUNT LAST CHG LAST CHG NUMBER

ORIGIN 5 04/10/2008 12.02.45 99COMP 10 04/10/2008 12.02.45 99CARREC 18 04/10/2008 12.02.45 99BODY 18 04/10/2008 12.02.45 99SPECS 18 04/10/2008 12.02.45 99WARANT 8 04/10/2008 12.02.45 99EQUIP 25 04/10/2008 12.02.45 99*INDEXES*COUNTRY 04/10/2008 12.02.45 99TOTAL SEGS 102TOTAL CHAR 3988TOTAL PAGES 8LAST CHANGE 04/10/2008 12.02.45 99

Page 39: Debugging Techniques Walter F. Blood Technical Director, FOCUS Division June, 2008

FOCUS Debugging TechniquesGeneral Techniques

5. What can FOCUS tell me? Use FOCUS Query Facilities to find hidden conditions

? FDT <focusfile> - Displays file directory table of FOCUS file

Check segment details

DIRECTORY:CAR FOCUS A ON 04/24/2008 AT 13.04.48 DATE/TIME OF LAST CHANGE: 04/10/2008 12.02.45

SEGNAME LENGTH PARENT START END PAGES LINKS TYPE

1 ORIGIN 5 1 1 1 22 COMP 9 1 2 2 1 53 CARREC 9 2 3 3 1 34 BODY 12 3 4 4 1 35 SPECS 21 4 5 5 1 26 WARANT 12 2 6 6 1 27 EQUIP 12 2 7 7 1 2 COUNTRY 8 8 1 NEW

DIRECTORY:CAR FOCUS A ON 04/24/2008 AT 13.04.48 DATE/TIME OF LAST CHANGE: 04/10/2008 12.02.45

SEGNAME LENGTH PARENT START END PAGES LINKS TYPE

1 ORIGIN 5 1 1 1 22 COMP 9 1 2 2 1 53 CARREC 9 2 3 3 1 34 BODY 12 3 4 4 1 35 SPECS 21 4 5 5 1 26 WARANT 12 2 6 6 1 27 EQUIP 12 2 7 7 1 2 COUNTRY 8 8 1 NEW

Page 40: Debugging Techniques Walter F. Blood Technical Director, FOCUS Division June, 2008

FOCUS Debugging TechniquesGeneral Techniques

5. What can FOCUS tell me? Use FOCUS Query Facilities to find hidden conditions

? STAT – Statistics for previous request/transaction

STATISTICS OF LAST COMMAND

RECORDS = 18 SEGS DELTD = 0LINES = 17 NOMATCH = 0BASEIO = 3 DUPLICATES = 0SORTIO = 0 FORMAT ERRORS = 0SORT PAGES = 0 INVALID CONDTS = 0READS = 0 OTHER REJECTS = 0TRANSACTIONS = 0 CACHE READS = 0ACCEPTED = 0 MERGES = 0SEGS INPUT = 0 SORT STRINGS = 0SEGS CHNGD = 0 INDEXIO = 0

INTERNAL MATRIX CREATED: YES AUTOINDEX USED: NOSORT USED: FOCUS AUTOPATH USED: YESAGGREGATION BY EXT.SORT: NO HOLD FROM EXTERNAL SORT: NO

STATISTICS OF LAST COMMAND

RECORDS = 18 SEGS DELTD = 0LINES = 17 NOMATCH = 0BASEIO = 3 DUPLICATES = 0SORTIO = 0 FORMAT ERRORS = 0SORT PAGES = 0 INVALID CONDTS = 0READS = 0 OTHER REJECTS = 0TRANSACTIONS = 0 CACHE READS = 0ACCEPTED = 0 MERGES = 0SEGS INPUT = 0 SORT STRINGS = 0SEGS CHNGD = 0 INDEXIO = 0

INTERNAL MATRIX CREATED: YES AUTOINDEX USED: NOSORT USED: FOCUS AUTOPATH USED: YESAGGREGATION BY EXT.SORT: NO HOLD FROM EXTERNAL SORT: NO

Page 41: Debugging Techniques Walter F. Blood Technical Director, FOCUS Division June, 2008

FOCUS Debugging TechniquesGeneral Techniques

KNOW the product! Refer to the doc when in doubtSearch techsupport.informationbuilders.comAsk questions on Focalpoint

Problem: User was getting strange results from a User Written Subroutine.

Solution: Check the documentation. User had incorrect arguments.

Problem: User was getting strange results from a User Written Subroutine.

Solution: Check the documentation. User had incorrect arguments.

Page 42: Debugging Techniques Walter F. Blood Technical Director, FOCUS Division June, 2008

FOCUS Debugging TechniquesGeneral Techniques

Assume nothing! CHECK EVERYTHING!

Problem: User was trying to do a segment redefinition, using POSITION.

Solution: Fields Were Incorrectly Added

Problem: User was trying to do a segment redefinition, using POSITION.

Solution: Fields Were Incorrectly Added

OCCURS = 5, LENGTH of the segment was 1000

FIELD=POSN1,E15,A50,A50,$SEGNAME=SEG1,POSITION=POSN1,OCCURS=5 FIELD=FLD1, , A200, A200,$

FIELD=POSN1,E15,A50,A50,$SEGNAME=SEG1,POSITION=POSN1,OCCURS=5 FIELD=FLD1, , A200, A200,$

Page 43: Debugging Techniques Walter F. Blood Technical Director, FOCUS Division June, 2008

FOCUS Debugging TechniquesGeneral Techniques

Do NOT use defaults! Code what you want to happen.

TABLEPut fields referenced in COMPUTEs as verb objects (NOPRINTed).

MODIFYCode “ON NOMATCH” condition before “ON MATCH” after EVERY MATCH.

TABLEPut fields referenced in COMPUTEs as verb objects (NOPRINTed).

MODIFYCode “ON NOMATCH” condition before “ON MATCH” after EVERY MATCH.

EFAULT

ISASTERboth begin with “D”.D

Page 44: Debugging Techniques Walter F. Blood Technical Director, FOCUS Division June, 2008

FOCUS Debugging TechniquesGeneral Techniques

If all else fails, GUESS at the solution, and TEST to verify

Problem:

Columns in EMR were incorrect or missing.

Solution:

Eliminated column specifications.

Found that FOCUS was adding verb objects for fields referenced in COMPUTEs.

Problem:

Columns in EMR were incorrect or missing.

Solution:

Eliminated column specifications.

Found that FOCUS was adding verb objects for fields referenced in COMPUTEs.

Page 45: Debugging Techniques Walter F. Blood Technical Director, FOCUS Division June, 2008

FOCUS Debugging TechniquesGeneral Techniques

When problems occur (and they will), eliminate, simplify, and reproduce on standard file (CAR, EMPLOYEE, GGDEMO).

Many times, what occurs is a symptom, not a cause.

When debugging, COPY the file and start removing a little at a time, until it works. Then see what is affected by the addition of the last removed item.

Alternatively, Use –GOTO to eliminate lines, and add back in until it doesn’t work.

Page 46: Debugging Techniques Walter F. Blood Technical Director, FOCUS Division June, 2008

FOCUS Debugging TechniquesIntegrity

FOCUS FilesCompare ? FDT vs Master File DescriptionCheck Physical vs. logical TableFRun VALIDATE FOCEXEC

Sequential FilesCompare CHECK FILE (minus GROUPs,

POSITION segments) vs LRECLVSAM Files

Compare IDCAMS vs Master File Description

Testing database validity

Page 47: Debugging Techniques Walter F. Blood Technical Director, FOCUS Division June, 2008

FOCUS Debugging TechniquesTesting Database Validity

****************LOGICAL COUNT****************STATUS OF FOCUS FILE CARCOUNT OF FIELD OCCURENCES THROUGH A ‘TABLEF’ COMMANDON 02/08/95 AT 19.39.44

ORIGIN COUNT 5COMP COUNT 10CARREC COUNT 18BODY COUNT 18SPECS COUNT* 18WARANT COUNT 8EQUIP COUNT 25

TOTAL 102

NOTE: SEGMENT COUNTS FOLLOWED BY ‘*’ ARE FOR UNIQUE SEGMENTS. THESE COUNTS MAY NOT AGREE WITH THE PHYSICAL COUNT FOR THAT SEGMENT. THIS CAN OCCUR WHEN DEFAULT VALUES ARE SUPPLIED FOR NON-EXISTENT UNIQUE SEGMENTS.

****************LOGICAL COUNT****************STATUS OF FOCUS FILE CARCOUNT OF FIELD OCCURENCES THROUGH A ‘TABLEF’ COMMANDON 02/08/95 AT 19.39.44

ORIGIN COUNT 5COMP COUNT 10CARREC COUNT 18BODY COUNT 18SPECS COUNT* 18WARANT COUNT 8EQUIP COUNT 25

TOTAL 102

NOTE: SEGMENT COUNTS FOLLOWED BY ‘*’ ARE FOR UNIQUE SEGMENTS. THESE COUNTS MAY NOT AGREE WITH THE PHYSICAL COUNT FOR THAT SEGMENT. THIS CAN OCCUR WHEN DEFAULT VALUES ARE SUPPLIED FOR NON-EXISTENT UNIQUE SEGMENTS.

Run VALIDATE On the FOCUS CAR file

Page 48: Debugging Techniques Walter F. Blood Technical Director, FOCUS Division June, 2008

FOCUS Debugging TechniquesTesting Database Validity

STATUS OF FOCUS FILE: CAR FOCUS A1 ON 02/08/95 AT 19:39:44 ACTIVE DELETED DATE OF TIME OF LAST TRANSSEGNAME COUNT COUNT LAST CHG LAST CHG NUMBER

ORIGIN 5 11/16/89 16:18:50 53COMP 10 11/16/89 16:18:50 53CARREC 18 11/16/89 16:18:50 53BODY 18 11/16/89 16:19:05 SPECS 18 11/16/89 16:18:50 53WARANT 8 11/16/89 16.18.50 53EQUIP 25 11/16/89 16.18.50 53***INDEXES***COUNTRY 11/16/89 16:18:50 53TOTAL SEGS 102TOTAL CHARS 3988TOTAL PAGES 8LAST CHANGE 11/16/89 16:19:05

STATUS OF FOCUS FILE: CAR FOCUS A1 ON 02/08/95 AT 19:39:44 ACTIVE DELETED DATE OF TIME OF LAST TRANSSEGNAME COUNT COUNT LAST CHG LAST CHG NUMBER

ORIGIN 5 11/16/89 16:18:50 53COMP 10 11/16/89 16:18:50 53CARREC 18 11/16/89 16:18:50 53BODY 18 11/16/89 16:19:05 SPECS 18 11/16/89 16:18:50 53WARANT 8 11/16/89 16.18.50 53EQUIP 25 11/16/89 16.18.50 53***INDEXES***COUNTRY 11/16/89 16:18:50 53TOTAL SEGS 102TOTAL CHARS 3988TOTAL PAGES 8LAST CHANGE 11/16/89 16:19:05

Compare to ? FILE On the FOCUS CAR file

Page 49: Debugging Techniques Walter F. Blood Technical Director, FOCUS Division June, 2008

FOCUS Debugging Techniques Code - Creating Test Data

Some problems require lots of data to reproduceSpecific data not importantProblem is volume-related

No one wants to create dataLet FOCUS do it

COMPUTE a counterUse EDIT to make alpha fields

Page 50: Debugging Techniques Walter F. Blood Technical Director, FOCUS Division June, 2008

FOCUS Debugging Techniques Code - Creating Test Data

DEFINE FILE realfile

CTR/I9 WITH CUSIP = CTR + 1;

CUSIP/A9 WITH CUSIP = CTR;

AMOUNT/D12.2M WITH AMOUNT = CTR + 1000;

END

TABLE FILE realfile

PRINT CUSIP AMOUNT …

ON TABLE HOLD AS name FORMAT format

END

DEFINE FILE realfile

CTR/I9 WITH CUSIP = CTR + 1;

CUSIP/A9 WITH CUSIP = CTR;

AMOUNT/D12.2M WITH AMOUNT = CTR + 1000;

END

TABLE FILE realfile

PRINT CUSIP AMOUNT …

ON TABLE HOLD AS name FORMAT format

END

Page 51: Debugging Techniques Walter F. Blood Technical Director, FOCUS Division June, 2008

FOCUS Debugging TechniquesCode - Creating Test Data

MODIFY FILE xxxCOMPUTE TEST/A1=;FIXFORM TEST/1REPEAT &number NOHOLDCOMPUTECTR/I5=CTR+1;other fieldsMATCH ...ENDREPEATDATAXEND

MODIFY FILE xxxCOMPUTE TEST/A1=;FIXFORM TEST/1REPEAT &number NOHOLDCOMPUTECTR/I5=CTR+1;other fieldsMATCH ...ENDREPEATDATAXEND

Page 52: Debugging Techniques Walter F. Blood Technical Director, FOCUS Division June, 2008

FOCUS Debugging TechniquesPerformance

Are you using the latest FOCUS efficiencies? BY TOTAL Multi-Path Compiled DEFINES SET SAVEDMASTERS FOCUS 7.6 SET MODCOMPUTE=NATV SET DIRECTHOLD=ON

Page 53: Debugging Techniques Walter F. Blood Technical Director, FOCUS Division June, 2008

FOCUS Debugging TechniquesPerformance

FOCUS limits are being raised FOC198 --- ERROR WRITING FOCSORT Unlimited FOCSORT (FOCUS 7.6) 2G FOCUS File Limit SET FOCUS2GDB=ON (FOCUS for S390) XFOCUS database with 16GB partition MDI for FOCUS and XFOCUS (FOCUS 7.6)

Page 54: Debugging Techniques Walter F. Blood Technical Director, FOCUS Division June, 2008

FOCUS Debugging Techniques Performance

Questions to ask when analyzing performanceShould I use DEFINES ?Will COMPUTEs work the same wayWhy isn’t Screening returning correct results

? SET MULTIPATH? SET ALL

Do I need 2-pass processingNote time for each step.

Page 55: Debugging Techniques Walter F. Blood Technical Director, FOCUS Division June, 2008

FOCUS Debugging Techniques Performance