Mar 27 2011

List AXCEL & OCA Status of TNS Objects

Category: TACL Macrossite admin @ 7:40 pm
TACL macro by Dave Does Tandem NonStop. Can be used to list all TNS objects in a given subvolume with their AXCEL and OCA status.
Opens the objects files, read the object file header and tests the appropriate fields.
The header layout can be officially found in $system.zguard.dobjfmt.

?TACL Routine
#FRAME
#PUSH file2test subv subv^test cnt e r p oct ipf
#PUSH ts

[#DEF file^hdr Struct
    Begin
    filler 180;
    uint   cts(0:2);
    filler 302;
    int2   ipf_addr;
    int2   ipf_len;
    uint   ipf_flags;
    int2   oct_addr;
    uint   oct_flags;
    filler   8;
    End;
]

[#CASE [#ARGUMENT /Value subv/Subvol Otherwise]
  |1| #SET file2test [subv]
  |2| #SET file2test [#DEFAULTS /Current/]
]

#SET subv^test [file2test]
#SET file2test [#NEXTFILENAME [file2test].A]

[#LOOP |While| [#MATCH [subv^test]* [file2test]] |Do|
  [#IF [#FILEINFO /Code/[file2test]] = 100 |Then|
   #SET e [#REQUESTER /Wait 512/Read [file2test] e r p]
   [#CASE [e]
     |0| #APPEND p >
         Sink [#REQUESTER /Wait/Close e]
         #EXTRACTV r file^hdr
         #SET ipf [#COMPUTE file^hdr:ipf_flags / 16384]
         #SET oct [#COMPUTE file^hdr:oct_flags / 16384]
         #SET ts [#COMPUTE [file^hdr:cts(0)] * 4294967296
                      +    [file^hdr:cts(1)] *      65536
                      +    [file^hdr:cts(2)]
                 ]
         #output Compiled - [_contime_to_text [#CONTIME [ts]]]
         #OUTPUT /Hold/[file2test]
         #OUTPUT /Column 30,Hold/ [#CASE [oct]
                                    | 0 1 | Not Axcel'd
                                    |  2  | Axcel'd but disabled
                                    |  3  | Axcel'd
                                  ]
         #OUTPUT /column 60/ [#CASE [ipf]
                               | 0 1 | Not OCA'd
                               |  2  | OCA'd
                               |  3  | OCA'd but disabled
                             ]
     |Otherwise| #OUTPUT [file2test] - open error [e]
   ] == End Case
  ] == End if

  #SET file2test [#NEXTFILENAME [file2test]]

] == End Loop

#UNFRAME

Tags: , ,