How to debug a dialog using IDMS online DEBUGGER.

Document ID : KB000054255
Last Modified Date : 14/02/2018
Show Technical Document Details

Description:

If your site does not have ADSALIVE you could use IDMS DEBUGGER as an alternative.

Solution:

Compile the dialog to be debugged with symbol and diagnostic tables enabled after explicitly checking it out to your user id so that after the compile it will remain checked out to you. To set break points in debugger you will need the name of the response processes in the dialog with the sequence number for each instruction. After compiling the dialog re-select the compile option then the view messages options. This must be done immediately after a compile which is why the dialog must be explicitly checked out. If the dialog is only implicitly checked it will be automatically released by ADSC and messages with the processes will be lost.

This is an example of the screen returned in response to view messages.

BROWSE -ERRORS: DEMODLG20001                                  COLUMNS 001 079 
COMMAND ===>                                                  SCROLL ===> CSR 
*** TOP OF DATA ****************************************** CA-IDMS/ADSERROR **
<PROCESS> DEMO2-PREMAP                     0001                               
    100 MOVE 'DEMODLG1' TO DEMO-DIALOG.                                       
    200 MOVE EMP-NAME-0415      TO EMP-FIRST-NAME-WRK.                        
    300  MOVE EMP-LAST-NAME-0415 TO EMP-LAST-NAME-WRK .                       
    500 DISPLAY.                                                              
<PROCESS> DEMO2-ENTER                      0001                               
    200 READY ORG-DEMO-REGION USAGE-MODE IS UPDATE.                           
    300 READY EMP-DEMO-REGION USAGE-MODE IS UPDATE.                           
    400 MOVE 'EMPDEMO' TO DB-NAME.                                            
    500 OBTAIN CALC EMPLOYEE.                                                 
    600 OBTAIN CALC EMPLOYEE.                                                 
    700 MOVE EMP-FIRST-NAME-WRK  TO EMP-NAME-0415.                            
    800 MOVE EMP-LAST-NAME-WRK   TO EMP-LAST-NAME-0415.                       
    900 MODIFY EMPLOYEE.                                                      
   1000 RETURN.                                                               
*** BOTTOM OF DATA *************************************** CA-IDMS/ADSERROR **

To access DEBUGGER for dialog DEMODLG2 type DEBUG DEBUG DIALOG DEMODLG2 and hit ENTER.

It returns with:

       DEBUG DIALOG DEMODLG2                              
DEBUG DIALOG DEMODLG2                                     
DEBUG> DEBUGGING INITIATED FOR DEMODLG2 VERSION CDMSLIB   
DEBUG>

To set a break point in premap process on the DISPLAY type:  
AT 'DEMO2-PREMAP'.#500 and hit enter. It returns with:

AT> 'DEMO2-PREMAP'.#500 ADDED       
DEBUG>

To set a break point on the instructions at 600 and 700 in the ENTER process use
AT 'DEMO2-ENTER'.#600 and AT 'DEMO2-ENTER'.#700

Hit enter after both commands.

Type EXIT and hit enter to exit DEBUGGER.

At enter next task code execute the dialog and it will stop at the first breakpoint.

AT OFFSET @440 IN DEMODLG2.DEMO2-PREMAP EXPRESSION 'DEMO2-PREMAP'.#500 
DEBUG>

At this breakpoint you could verify the content of field EMP-LAST-NAME-WRK with command  LIST 'EMP-LAST-NAME-WRK'

It returns the content which is all blanks in this case.

AT OFFSET @440 IN DEMODLG2.DEMO2-PREMAP EXPRESSION 'DEMO2-PREMAP'.#500 
DEBUG>                                                                 
 LIST 'EMP-LAST-NAME-WRK'                                              
LIST 'EMP-LAST-NAME-WRK'                                               
3859C0EA      4040 40404040 40404040 40404040 *                *       
3859C0F8  40                                  *                *       
DEBUG>

To continue processing type RESUME and hit enter. In response to resume it executes the DISPLAY commands that writes out the map.

Hit the enter key to execute the enter process and it takes us to the next breakpoint.

AT OFFSET @52C IN DEMODLG2.DEMO2-ENTER EXPRESSION 'DEMO2-ENTER'.#600  
DEBUG> 

To check the status of the obtain at 500 use LIST 'ERROR-STATUS' OF 'ADSO-STAT-DEF-REC'

LIST 'ERROR-STATUS' OF 'ADSO-STAT-DEF-REC'                           
3859BE6C  F0F3F2F6                            *0326            *     
DEBUG>

The 0326 occurred because the dialog did not set the calc key for the employee record just prior to the obtain. This can be done using DEBUGGER by first displaying the emp-id-0415 field which is the calc key for this record.

 LIST 'EMP-ID-0415'                                                     
LIST 'EMP-ID-0415'                                                      
3859F774  F0F0F0F0                            *0000            *        
DEBUG>

Note that it returns the address of 3859F774 for the 4 byte calc key.  To set this to a valid calc key such as 0023 use SET @3859F774=X'F0F0F2F3' and hit enter.

It returns:

SET @3859F774=X'F0F0F2F3'                                              
OLD                                                                    
3859F774  F0F0F0F0                            *0000            *       
NEW                                                                    
3859F774  F0F0F2F3                            *0023            *       
DEBUG>

Type RESUME to execute the next OBTAIN and stop at 700.

Next to check the error status

LIST 'ERROR-STATUS' OF 'ADSO-STAT-DEF-REC'                       
 
LIST 'ERROR-STATUS' OF 'ADSO-STAT-DEF-REC'                          
3859F46C  F0F0F0F0                            *0000            *

It now returns error status of 0000.

To terminate the debug session and clear the breakpoints type QUIT and hit enter.