next up previous contents index
Next: Monitor changes inside Up: DZ: The debug Previous: Display routines

Map and checks on the division level

Snap of one or more divisions

 

CALL DZSNAP (CHTEXT,IXDIV,CHOPT)

Action: DZSNAP provides a snapshot of one or more divisions in a ZEBRA store. The kind of information provided is controlled by CHOPT.

CHTEXT
Character variable specifying the title to be printed (truncated to 50 characters).
IXDIV
Index of the division(s) to be snapped. With function MZIXCO several divisions can be combined. If no explicit division identifiers are specified all user divisions are snapped.
CHOPT
Character variable specifying the snap options desired.
'C' ritical
Dump any active bank with status bit IQCRIT set; bit IQCRIT will be reset to zero in each bank (option C is implied by option T )
'D' ump
Dump any active bank with status bit IQMARK set; bit IQMARK will be reset to zero in each bank
'E' xtend
Extend map entry to dump all links of each bank (otherwise only as many links as will fit on a line)
'F' ull
Dump all active banks, links and data
'K' ill
Dropped banks are to be treated as active (dropped banks are normally not dumped with the D or F options)
'L' ink
Dump all link areas associated with the store
'M' ap
Print map entry for each bank
'T' erminal
Terminal type dump, used for the post-mortem dump mainly to mark ``critical'' directly accessible banks
'W' ork
Dump the working space, links and data
'Z'
Dump the information in hexadecimal.

Store information

The first part of the output of DZSNAP refers to the store, and contains the following information:

NAME
Name of the store
lQSTOR
Absolute address -1 of the store
NQSTRU
Number of structural links at the beginning of the store
NQREF
Number of permanent links at the beginning of the store
NQLINK
Number of permanent + working space links
NQMINR
Minimum size of the reserve area between divisions 1 and 2
LQ2END
Lower limit for the upper and of division 2
JQDVLL
Index of the most recent short-range divisions
JQDVSY
Index of the system division
NQFEND
Number of fence words
LOW-1/N
Start and end address of division 1
HIGH-1/N
Start and end address of division 2
SYST-1/N
Start and end address of the system division
END
Address of the last user word in the store

Bank information

A map output in DZSNAP (selected by the option letter M )

gives a comprehensive overview of all banks in the one or more divisions in a ZEBRA dynamic store. One or two (MAP-)line(s) are printed per bank. They contain the following information:

First line (General information)

Second line (Links) (present only when there are non-zero links)

  1. a two character flag:
    **
    the bank is dropped (also signaled by a left parenthesis '(' on the first line)
    .
    the bank is active, all non-zero links are printed
    +
    the bank is active, not all non-zero links are printed
    F
    in position 2 flags a bank with potentially dangerous contents in the links printed. This could be either:
    • illegal link content
    • dropped bank supporting an active bank (not via NX link)
    • active bank pointing to a dropped bank
  2. links 1,2....N are printed in this order with N the smaller of the the following 2 numbers:
    N1
    the last non-zero link of this bank;
    N2
    the number of links which can be printed on one line (typically 9)
    If the link points to a correct bank-address, the ID of that bank is also printed, preceded by ( if this bank has been dropped. If the link does not point to a status word, then a - or **** is printed against it for legal or illegal link content.

Normally, the map is at the same time a printout of the more interesting links in the banks. However, banks may have more than the N2 links, the maximum printed in the map. If it is desired to print all the links, the option letter E should be given and then an internal call to DZSHOW is generated.

To avoid confusion about the format of a data word, an extra symbol may be printed on its left:

O
for octal
Z
for hexadecimal,
"
for BCD.

Verify one or more ZEBRA divisions

CALL DZVERI (CHTEXT,IXDIV,CHOPT)

Action: DZVERI checks the structure of one or more divisions in a ZEBRA store. The verification detail depends on the settings in CHOPT.

CHTEXT
Character variable specifying the text to be printed together with the verification (truncated to 50 characters).
CHTEXT=' ': No message is output unless an error is detected. In the latter case a message detailing the problem is always output, irrespective of CHTEXT.
IXDIV
Index of the division(s) to be verified.
For a combination of divisions the MZ function MZIXCO should be used.
If no explicit division identifiers are specified all user divisions are verified.
CHOPT
Character variable specifying level of checks desired.
'C'
Check chaining of banks only (default)
'F'
Errors are considered fatal and generate a call to ZFATAL
'L'
Check validity of the structural links in the banks

(implies C )

'S'
Check the store parameters
'U'
Check the validity of the up and origin links in the banks

(implies C )

When an error is detected the variable \IQUEST(1) in common /\QUEST/ will be non zero. When everything is correct it will contain zero.

Example of the use of DZSTOR to check store parameters

     CALL DZVERI('Check store layout',IXSTOR,'S')
The previous example only checks the store parameters for store IXSTOR.

Example of the use of DZSTOR to make a complete check

     CALL DZVERI('Check everything',IXDIVI,'CFLSU')
This example checks the store parameters of the store containing the divisions IXDIVI, verifies the chaining of the banks and the correctness of all links (structural, next, up and origin links). When an error is

detected an exit is forced via ZFATAL.

It should be noted that in the MZ package, developped by J.Zoll, a routine ZVERIF, with a functionality similar to DZVERI is available. This routine has two somewhat different modes of operation: one in which all data in and relevant to a complete store are checked and a call to ZFATAL is generated if it finds trouble, and a second one in which, in case of trouble, control is returned to the user, who can find information about the error condition in the communication vector .

ZVERIF is used by the automatic verification procedure ZVAUTO, see the MZ Reference Guide for more details.

DZVERI error return codes

When DZVERI detects an error it fills the vector as follows:

IQUEST(11)
JQSTOR, the store identifier
IQUEST(12)
JQDIVI, the division identifier

----- 'C' option only -- For each faulty bank

IQUEST(13)
LN, its start address
IQUEST(14)
IQLS, its status word
IQUEST(15)
IQNL, its total number of links
IQUEST(16)
IQNS, its number of structural links
IQUEST(17)
IQNS, its number of data words

----- 'L' option only (check structural links in banks)

IQUEST(18)
L, the address of the link being verified
IQUEST(19)
LQ(L), its contents

----- 'U' option only (check origin and up links in banks)

IQUEST(20)
LUP, the value of the up link
IQUEST(21)
LORIG, the value of the origin link



next up previous contents index
Next: Monitor changes inside Up: DZ: The debug Previous: Display routines


Janne Saarela
Mon May 15 08:34:47 METDST 1995