FOCUS Debugging Techniques

Download Report

Transcript FOCUS Debugging Techniques

Debugging Techniques
Walter F. Blood
Technical Director, FOCUS Division
June, 2008
FOCUS Debugging Techniques
Agenda
When and Why? Debugging Itself
The 5 Key Questions – General Techniques
Reporting Issues - TABLE
Integrity
Code
Performance
FOCUS Debugging Techniques
Debugging Itself
When will you need debugging?
You don’t get the results you expect
Your old report stops working in a new release
You get a FOCUS error message – FOCnnn
Your report never comes back.
Your systems person calls you to complain about your
activity.
FOCUS abends or you get a -12 from the server.
FOCUS Debugging Techniques
Debugging Itself
What can you expect from debugging?
To get the report working now
To find a workaround for the problem if necessary
To have the problem fixed by IBI if required
FOCUS Debugging Techniques
General Techniques
The Five Key Questions
1. 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?
FOCUS Debugging Techniques
General 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
FOCUS Debugging Techniques
General Techniques
2. What is the first sign of trouble?
FOCUS error message
Check description to determine nature of problem
TABLE FILE CAR
PRINT COUNTRY CAR MODEL AND
COMPUTE 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 Techniques
General Techniques
2. What is the first sign of trouble?
FOCUS error message
Multiple FOCUS error messages
SET ECHO ON;
DEFINE FILE CAR
CONTINENT/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;
END
TABLE FILE CAR
SUM RETAIL_COST DEALER_COST PROFIT
BY CONTINENT
BY COUNTRY
ON TABLE HOLD AS HOLDCAR FORMAT FOCUS INDEX COUNTRY
END
-RUN
TABLE FILE ABCHOLD
PRINT SALES PROFIT BY CONTINENT
END
FOCUS Debugging Techniques
General Techniques
 2. What is the first sign of trouble?
FOCUS error message
Multiple FOCUS error messages
FOCUS errors compound
Solve the earliest exposed problem first!
> (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 STATEMENT
ERROR 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
FOCUS Debugging Techniques
General Techniques
2. What is the first sign of trouble?
FOCUS error message
Multiple FOCUS error messages
Incorrect or unexpected results
Work backwards from incorrect results
Look for
Logic errors
Incorrect assumptions
FOCUS errors
FOCUS Debugging Techniques
General Techniques
2. What is the first sign of trouble?
FOCUS error message
Multiple FOCUS error messages
Incorrect or unexpected results
DEFINE FILE CAR
PROFITMARGIN/D7=((RETAIL_COST - DEALER_COST)/DEALER_COST)*100;
END
TABLE FILE CAR
SUM RETAIL_COST DEALER_COST PROFITMARGIN
BY COUNTRY
END
PAGE
1
COUNTRY
------ENGLAND
FRANCE
ITALY
JAPAN
W GERMANY
RETAIL_COST
----------45,319
5,610
51,065
6,478
64,732
DEALER_COST
----------37,853
4,631
41,235
5,512
54,563
PROFITMARGIN
-----------78
21
88
35
115
FOCUS Debugging Techniques
General Techniques
2. What is the first sign of trouble?
FOCUS error message
Multiple FOCUS error messages
Incorrect or unexpected results
TABLE FILE CAR
SUM RETAIL_COST DEALER_COST PROFITMARGIN
COMPUTE PM/D7=
((RETAIL_COST - DEALER_COST)/DEALER_COST)*100;
BY COUNTRY
END
PAGE
1
COUNTRY
------ENGLAND
FRANCE
ITALY
JAPAN
W GERMANY
RETAIL_COST
----------45,319
5,610
51,065
6,478
64,732
DEALER_COST
----------37,853
4,631
41,235
5,512
54,563
PM
-20
21
24
18
19
FOCUS Debugging Techniques
General Techniques
2. What is the first sign of trouble?
FOCUS error message
Multiple FOCUS error messages
Incorrect results
Abend
Traces help identify FOCUS errors
Dumps may be required
FOCUS Debugging Techniques
General Techniques
2. What is the first sign of trouble?
FOCUS error message
Check description to determine nature of problem
Multiple FOCUS error messages
FOCUS errors compound
Solve the earliest exposed problem first!
Incorrect results
Work backwards from incorrect results
Look for FOCUS errors
Abend
Traces help identify FOCUS errors
Dumps may be required
FOCUS Debugging Techniques
General Techniques
3. Will the problem occur with less code?

Simplify the problem.
Remove code not related to the problem
Segment 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.
FOCUS Debugging Techniques
General Techniques

Remove code until problem disappears
TABLE FILE ABC
SUM F1 F2 F3/A4 FST.F4
BY S1 NOPRINT
BY S2
BY HIGHEST 3 S3 SUBTOTAL PLUS-OTHERS
WHERE ((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
ON TABLE SET STYLE *
TYPE = REPORT, …
ENDSTYLE
END
FOCUS Debugging Techniques
General Techniques

Segment TABLE request to isolate the problem
-DEFAULTS START=STEP1, STOP=STEP99,ECHO=OFF
-SET ECHO=&ECHO;
-GOTO &START
-STEP1
TABLE FILE …
lots of code
-GOTO NOSTY
ON TABLE SET STYLE *
TYPE = REPORT, …
ENDSTYLE
-NOSTY
END
FOCUS Debugging Techniques
General Techniques

Use GOTO to exclude MODIFY cases
MODIFY FILE …
GOTO TWO
CASE ONE
…
ENDCASE
CASE TWO
…
ON MATCH/NOMATCH GOTO END
ENDCASE
CASE THREE
…
ENDCASE
DATA
END
FOCUS Debugging Techniques
General Techniques
4. What is FOCUS/WebFOCUS actually doing?
 Expose what is happening.
 In TABLE:
Use LET NOPRINT = ; to show complete request
Use SET DEFECHO to show variable substitution
Use –TYPE to expose system variable values
SET DEFECHO=ALL
LET NOPRINT = ;
TABLE FILE CAR
TABLE FILE CAR
SUM …
SUM RETAIL_COST
WHERE COUNTRY EQ &VAR1
BY COUNTRY NOPRINT
…
…
TABLE FILE CAR
…
END
-RUN
-TYPE RECORDS &RECORDS
FOCUS Debugging Techniques
General 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 TOP
DATA FOR TRANSACTION 1
EMP_ID => 112847612
CURR_SAL => 67000
MODIFY FILE EMPLOYEE
TRACE ===> AT CASE HIGHSAL
…
YOU ENTERED A SALARY ABOVE $50000
CASE ONE
…
TYPE IN CASE ONE
MATCH EMP_ID
TYPE AFTER MATCH
ON MATCH UPDATE CURR_SAL
FOCUS Debugging Techniques
General 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
SET DEFECHO=ALL
-SET &ECHO=ON
…
EX pgm2 ECHO=&ECHO
-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
FOCUS Debugging Techniques
General 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
SQL
SELECT BODYTYPE, AVG(MPG), SUM(SALES)
FROM CAR
WHERE RETAIL_COST > 5000
> SET COUNTWIDTH=ON
GROUP BY BODYTYPE;
-SET SQLERRNUM = 0;
ECHO
TABLE FILE CAR
WRITE
TABLE
MIN.BODYTYPE AS 'BODYTYPE' AVE.MPG SUM.SALES
END
BY BODYTYPE NOPRINT
WHERE ( RETAIL_COST GT 5000 ) ;
ON TABLE SET CARTESIAN ON
ON TABLE SET ASNAMES ON
ON TABLE SET HOLDLIST PRINTONLY
END
-RUN
FOCUS Debugging Techniques
General Techniques
4. What is FOCUS/WebFOCUS actually doing?
 Expose what is happening.
 With Interfaces:
Use SET XRETRIEVAL=OFF to suppress data access
SET XRETRIEVAL=OFF
TABLE FILE DB2FILE
SUM RETAIL_COST DEALER COST
BY COUNTRY
WHERE SALES GT 5000
END
...RETRIEVAL KILLED
NUMBER OF RECORDS IN TABLE=
0 LINES=
0
FOCUS Debugging Techniques
General Techniques
4. What is FOCUS/WebFOCUS actually doing?
 Expose what is happening.
 With Interfaces:
Use SET XRETRIEVAL=OFF to suppress data access
Use Traces to expose interface activity
SET TRACEUSER=ON
SET TRACEOFF=ALL
SET 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
FOCUS Debugging Techniques
General Techniques
5. What can FOCUS tell me?
Use CHECK FILE to determine PATHs if you get -FOC144 – Testing on independent paths of data
FOC030 -- All verb objects must be in the
same path as their sort fields
01
S1
**************
CHECK FILE EMPLOYEE PICTURE
*EMP_ID
**
*LAST_NAME
**
*FIRST_NAME **
*HIRE_DATE
**
*
**
***************
**************
I
+-----------------+-----------------+-----------------+-----------------+
I
I
I
I
I
I FUNDTRAN
I PAYINFO
I ADDRESS
I SALINFO
I ATTNDSEG
02
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 Techniques
General Techniques
5. What can FOCUS tell me?
Use CHECK FILE HOLD to determine PATHs if you get -CHECK 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 ,$
TABLE FILE HOLD
PRINT SEGNAME
SEGNO
FIELDNAME/A30
PATH
WHERE FIELDNAME EQ …..
END
FOCUS Debugging Techniques
General 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
? TSO DDNAME MULTVOL
DDNAME = MULTVOL
file characteristics
DSNAME = USER1.FOCTST.MULTVOL
DISP = NEW
DEVICE = DISK
VOLSER = MFOC02,MFOC01
DSORG = PS
RECFM = F
SECONDARY = 4
ALLOCATION = TRACKS
BLKSIZE = 4096
LRECL = 4096
TRKTOT = 92
EXTENTSUSED = 23
BLKSPERTRK = 12
TRKSPERCYL = 15
CYLSPERDISK = 2227
BLKSWRITTEN = 1104
FOCUSPAGES = 1059
FOCUS Debugging Techniques
General 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
PR
S
TF
SCAN
>
ON TABLE HOLD AS
PRINT
SUM
TABLE FILE
END
FOCUS Debugging Techniques
General 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
? DEFINE
FILE
EMPLOYEE
EMPLOYEE
EMPLOYEE
CAR
CAR
CAR
EMPLOYEE
FIELD NAME
FCONCAT
FARITH
FIFTHEN
PROFIT
MARGIN
CONTINENT
WKSAL
FORMAT
A26
I9S
I1
D12.2
D5.2
A10
D12.2
SEGMENT
1
2
1
4
4
1
1
VIEW
TYPE
MASTER
MASTER
MASTER
FOCUS Debugging Techniques
General 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
>
FOCUS Debugging Techniques
General 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 effect
Check for expected settings at time of error
Check when using ON TABLE SET
PROFILEs change them, cumulative effect
FOCUS Debugging Techniques
General Techniques
5. What can FOCUS tell me?
 ? SET
PARAMETER SETTINGS
ALL.
OFF
ASNAMES
FOCUS
AUTOINDEX
ON
AUTOPATH
ON
BINS
64
BLKCALC
NEW
_MTWTF_
? BUSDAYS
SET HOLDLIST
BYPANELING
OFF
HOLDLIST
CACHE
0
CARTESIAN
OFF
CDN
> COLUMNSCROLL
OFF
DATEDISPLAY
OFF
DATEFNS
ON
DATETIME STARTUP/RESET
19
? DEFCENT
SET FOR PRINTPLUS
DEFECHO
OFF
PRINTPLUS
EMPTYREPORT
OFF
EXCELRELEASE
2000
EXL2KLANG
1
? SET <parameter
? SET FOR <parameter
FOCALLOC
OFF
FOCCREATELOC
OFF
FOCSTACK SIZE
8
FOCTRANSFORM
OFF
FOC2GIGDB
OFF
HDAY
HIPERFOCUS
OFF
HOLDATTRS
FOCUS
HOLDLISTALL
ALL
HOLDSTAT
OFF
OFF
HOTMENU
IBMLE
ON
INDEX TYPE
NEW
LANGUAGE
AMENGLISH
LINES/PAGE
66
LINES/PRINT
57
MESSAGE
ON
MODE OFF
CMS
MULTIPATH
SIMPLE
NODATA
.
PRINTPLUS
OFF
QUALCHAR
.
QUALTITLES
OFF
REBUILDMSG
1000
RECAP-COUNT
OFF
SAVEMATRIX
OFF
SCREEN
ON
SHADOW PAGE
OFF
SMARTMODE
OFF
SPACES
AUTO
OFF
SQLENGINE
SUMPREFIX
LST
TCPIPINT
OFF
TEMP DISK
Z
TERMINAL
IBM3270
TESTDATE
TODAY
TITLES
ON
VIEWNAMESIZE
18
WIDTH
130
WINPFKEY
OLD
------------------------------------------------SETTABLE FROM COMMAND LINE
:
YES
MORE...
IBIVM
SETTABLE ON TABLE
:
NO
SETTABLE FROM SYSTEM-WIDE PROFILE
:
YES
SETTABLE FROM HLI PROFILE
:
YES
POOL TABLE BOUNDARY
:
NO
FOCUS Debugging Techniques
General 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
&&MAXIMUM
&&MINIMUN
&&ONE
>
OFF
123456789
100000000
FIRST
FOCUS Debugging Techniques
General 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
FIELD
----COUNTRY
JOBCODE
ID_NUM
BODYTYPE
>
FILE
TAG
-----CAR
EMPLOYEE
SALES
CAR
CROSSREFERENCE
FIELD
FILE
TAG
---------COUNTRY
CONTNENT
JOBCODE
JOBFILE
EMP_ID
EDUCFILE
EMP_ID
EMPLOYEE
AS
-J1
J2
J3
J4
ALL
--N
N
Y
Y
WH
-N
N
N
Y
FOCUS Debugging Techniques
General 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
? FILTER
SET FILE
--- -------CAR
CAR
*
CAR
FILTER NAME DESCRIPTION
----------- --------------------------------HIMARGIN
MDMARGIN
LOMARGIN
FOCUS Debugging Techniques
General 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
CAR
EMPLOYEE
JOBFILE
EDUCFILE
TAG
PREFIX
FOCUS Debugging Techniques
General 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
STYLESHEET
SQUEEZE
PAGESIZE
ORIENTATION
UNITS
LABELPROMPT
LEFTMARGIN
RIGHTMARGIN
TOPMARGIN
BOTTOMMARGIN
STYLEMODE
TARGETFRAME
FOCEXURL
BASEURL
STANDARD
ON
OFF
Letter
PORTRAIT
INCHES
OFF
.250
.250
.250
.250
FULL
FOCUS Debugging Techniques
General 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 TRANS
SEGNAME
COUNT
COUNT
LAST CHG
LAST CHG
NUMBER
ORIGIN
COMP
CARREC
BODY
SPECS
WARANT
EQUIP
*INDEXES*
COUNTRY
TOTAL SEGS
TOTAL CHAR
TOTAL PAGES
LAST CHANGE
5
10
18
18
18
8
25
04/10/2008
04/10/2008
04/10/2008
04/10/2008
04/10/2008
04/10/2008
04/10/2008
12.02.45
12.02.45
12.02.45
12.02.45
12.02.45
12.02.45
12.02.45
99
99
99
99
99
99
99
04/10/2008
12.02.45
99
04/10/2008
12.02.45
99
102
3988
8
FOCUS Debugging Techniques
General 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
DATE/TIME OF LAST CHANGE:
1
2
3
4
5
6
7
SEGNAME
LENGTH
ORIGIN
COMP
CARREC
BODY
SPECS
WARANT
EQUIP
COUNTRY
5
9
9
12
21
12
12
PARENT
1
2
3
4
2
2
ON 04/24/2008 AT 13.04.48
04/10/2008
12.02.45
START
1
2
3
4
5
6
7
8
END
PAGES
1
2
3
4
5
6
7
8
1
1
1
1
1
1
1
1
LINKS
TYPE
2
5
3
3
2
2
2
NEW
FOCUS Debugging Techniques
General 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
LINES
BASEIO
SORTIO
SORT PAGES
READS
TRANSACTIONS
ACCEPTED
SEGS INPUT
SEGS CHNGD
=
=
=
=
=
=
=
=
=
=
18
17
3
0
0
0
0
0
0
0
INTERNAL MATRIX CREATED: YES
SORT USED:
FOCUS
AGGREGATION BY EXT.SORT: NO
SEGS DELTD
NOMATCH
DUPLICATES
FORMAT ERRORS
INVALID CONDTS
OTHER REJECTS
CACHE READS
MERGES
SORT STRINGS
INDEXIO
=
=
=
=
=
=
=
=
=
=
0
0
0
0
0
0
0
0
0
0
AUTOINDEX USED:
NO
AUTOPATH USED:
YES
HOLD FROM EXTERNAL SORT: NO
FOCUS Debugging Techniques
General Techniques
KNOW the product!
Refer to the doc when in doubt
Search techsupport.informationbuilders.com
Ask questions on Focalpoint
Problem:
User was getting strange results from
a User Written Subroutine.
Solution:
Check the documentation.
User had incorrect arguments.
FOCUS Debugging Techniques
General Techniques
Assume nothing! CHECK EVERYTHING!
Problem:
User was trying to do a segment
redefinition, using POSITION.
FIELD=POSN1,E15,A50,A50,$
Solution:
SEGNAME=SEG1,POSITION=POSN1,OCCURS=5
Fields Were Incorrectly Added
FIELD=FLD1, , A200, A200,$
OCCURS = 5, LENGTH of the segment was 1000
FOCUS Debugging Techniques
General Techniques
Do NOT use defaults! Code what you want to happen.
D
EFAULT both begin with “D”.
ISASTER
TABLE
Put fields referenced in COMPUTEs as verb objects
(NOPRINTed).
MODIFY
Code “ON NOMATCH” condition before “ON
MATCH” after EVERY MATCH.
FOCUS Debugging Techniques
General 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.
FOCUS Debugging Techniques
General 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.
FOCUS Debugging Techniques
Integrity
Testing database validity
FOCUS Files
Compare ? FDT vs Master File Description
Check Physical vs. logical TableF
Run VALIDATE FOCEXEC
Sequential Files
Compare CHECK FILE (minus GROUPs,
POSITION segments) vs LRECL
VSAM Files
Compare IDCAMS vs Master File Description
FOCUS Debugging Techniques
Testing Database Validity
Run VALIDATE On the FOCUS CAR file
***************
*LOGICAL COUNT*
***************
STATUS OF FOCUS FILE CAR
COUNT OF FIELD OCCURENCES THROUGH A ‘TABLEF’ COMMAND
ON 02/08/95 AT 19.39.44
ORIGIN
COMP
CARREC
BODY
SPECS
WARANT
EQUIP
TOTAL
COUNT
COUNT
COUNT
COUNT
COUNT*
COUNT
COUNT
5
10
18
18
18
8
25
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.
FOCUS Debugging Techniques
Testing Database Validity
Compare to ? FILE On the FOCUS CAR file
STATUS OF FOCUS FILE: CAR
FOCUS
A1 ON 02/08/95 AT 19:39:44
ACTIVE DELETED
DATE OF
TIME OF
LAST TRANS
SEGNAME
COUNT
COUNT
LAST CHG LAST CHG
NUMBER
ORIGIN
COMP
CARREC
BODY
SPECS
WARANT
EQUIP
***INDEXES***
COUNTRY
TOTAL SEGS
TOTAL CHARS
TOTAL PAGES
LAST CHANGE
5
10
18
18
18
8
25
11/16/89
11/16/89
11/16/89
11/16/89
11/16/89
11/16/89
11/16/89
16:18:50
16:18:50
16:18:50
16:19:05
16:18:50
16.18.50
16.18.50
53
53
53
11/16/89
16:18:50
53
11/16/89
16:19:05
102
3988
8
53
53
53
FOCUS Debugging Techniques
Code - Creating Test Data
Some problems require lots of data to reproduce
Specific data not important
Problem is volume-related
No one wants to create data
Let FOCUS do it
COMPUTE a counter
Use EDIT to make alpha fields
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
FOCUS Debugging Techniques
Code - Creating Test Data
MODIFY FILE xxx
COMPUTE TEST/A1=;
FIXFORM TEST/1
REPEAT &number NOHOLD
COMPUTE
CTR/I5=CTR+1;
other fields
MATCH ...
ENDREPEAT
DATA
X
END
FOCUS Debugging Techniques
Performance

Are you using the latest FOCUS efficiencies?
 BY TOTAL
 Multi-Path
 Compiled DEFINES
 SET SAVEDMASTERS
 FOCUS 7.6
 SET MODCOMPUTE=NATV
 SET DIRECTHOLD=ON
FOCUS Debugging Techniques
Performance

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)
FOCUS Debugging Techniques
Performance
Questions to ask when analyzing performance
Should I use DEFINES ?
Will COMPUTEs work the same way
Why isn’t Screening returning correct results
? SET MULTIPATH
? SET ALL
Do I need 2-pass processing
Note time for each step.
FOCUS Debugging Techniques
Performance