From:	CRDGW2::CRDGW2::MRGATE::"SMTP::CRVAX.SRI.COM::RELAY-INFO-VAX" 14-DEC-1989 10:40
To:	MRGATE::"ARISIA::EVERHART"
Subj:	Fixed bug in XAB.H (VAXC 3.0).

Received: From UCBVAX.BERKELEY.EDU by GIZMO.SRI.COM with TCP; Thu, 14 DEC 89 06:44:27 PDT
Received: by ucbvax.Berkeley.EDU (5.61/1.40)
	id AA08329; Thu, 14 Dec 89 06:31:20 -0800
Received: from USENET by ucbvax.Berkeley.EDU with netnews
	for info-vax@kl.sri.com (info-vax@kl.sri.com)
	(contact usenet@ucbvax.Berkeley.EDU if you have questions)
Date: 14 Dec 89 10:37:44 GMT
From: mcsun!hp4nl!phigate!philtis!sloetjes@uunet.uu.net  (Dick Sloetjes)
Organization: Philips Medical Systems
Subject: Fixed bug in XAB.H (VAXC 3.0).
Message-Id: <890@philtis.cft.philips.nl>
Sender: info-vax-request@kl.sri.com
To: info-vax@kl.sri.com


At our site we have discovered that the structure definition of XABKEY in
XAB.H had the wrong size. We are using VAXC 3.0 and VMS 5.1. Digital wasn't 
willing to send us a corrected XAB.H. They said: "It shall be fixed in 3.1". 
Well, we have looked in starlet.req and fixed the bug.

Copy XAB.H to sys$library and don't forget to update the text library
sys$library:vaxcdef.tlb


$! ................... Cut between dotted lines and save. ...................
$!...........................................................................
$! VAX/VMS archive file created by VMS_SHARE V06.10 7-FEB-1989.
$!
$! VMS_SHARE was written by James Gray (Gray:OSBUSouth@Xerox.COM) from
$! VMS_SHAR by Michael Bednarek (U3369429@ucsvc.dn.mu.oz.au).
$!
$! To unpack, simply save, concatinate all parts into one file and
$! execute (@) that file.
$!
$! This archive was created by user DSLOETJES
$! on 14-DEC-1989 09:59:59.11.
$!
$! It contains the following 1 file:
$!        XAB.H
$!
$!============================================================================
$ SET SYMBOL/SCOPE=( NOLOCAL, NOGLOBAL )
$ VERSION = F$GETSYI( "VERSION" )
$ IF VERSION .GES "V4.4" THEN GOTO VERSION_OK
$ WRITE SYS$OUTPUT "You are running VMS ''VERSION'; ", -
    "VMS_SHARE V06.10 7-FEB-1989 requires VMS V4.4 or higher."
$ EXIT 44 ! SS$_ABORT
$VERSION_OK:
$ GOTO START
$!
$UNPACK_FILE:
$ WRITE SYS$OUTPUT "Creating ''FILE_IS'"
$ DEFINE/USER_MODE SYS$OUTPUT NL:
$ EDIT/TPU/COMMAND=SYS$INPUT/NODISPLAY/OUTPUT='FILE_IS'/NOSECTION -
    VMS_SHARE_DUMMY.DUMMY
b_part := CREATE_BUFFER( "{Part}", GET_INFO( COMMAND_LINE, "file_name" ) )
; s_file_spec := GET_INFO( COMMAND_LINE, "output_file" ); SET( OUTPUT_FILE
, b_part, s_file_spec ); b_errors := CREATE_BUFFER( "{Errors}" ); i_errors 
:= 0; pat_beg_1 := ANCHOR & "-+-+-+ Beginning"; pat_beg_2 := LINE_BEGIN 
& "+-+-+-+ Beginning"; pat_end := ANCHOR & "+-+-+-+-+ End"; POSITION
( BEGINNING_OF( b_part ) ); LOOP EXITIF SEARCH( SPAN( ' ' )@r_trail 
& LINE_END, FORWARD) = 0; POSITION( r_trail ); ERASE( r_trail ); ENDLOOP
; POSITION( BEGINNING_OF( b_part ) ); i_append_line := 0; LOOP EXITIF MARK
( NONE ) = END_OF( b_part ); s_x := ERASE_CHARACTER( 1 )
; IF s_x = '+' THEN r_skip := SEARCH( pat_beg_1, FORWARD, EXACT ); IF r_skip 
<> 0 THEN s_x := ''; MOVE_HORIZONTAL( -CURRENT_OFFSET ); ERASE_LINE; ENDIF
; ENDIF; IF s_x = '-' THEN r_skip := SEARCH( pat_end, FORWARD, EXACT )
; IF r_skip <> 0 THEN s_x := ''; MOVE_HORIZONTAL( -CURRENT_OFFSET ); m_skip 
:= MARK( NONE ); r_skip := SEARCH( pat_beg_2, FORWARD, EXACT ); IF r_skip 
<> 0 THEN POSITION( END_OF( r_skip ) ); MOVE_HORIZONTAL( -CURRENT_OFFSET )
; MOVE_VERTICAL( 1 ); MOVE_HORIZONTAL( -1 ); ELSE POSITION( END_OF( b_part ) 
); ENDIF; ERASE( CREATE_RANGE( m_skip, MARK( NONE ), NONE ) ); ENDIF; ENDIF
; IF s_x = 'V' THEN s_x := ''; IF i_append_line <> 0 THEN APPEND_LINE
; MOVE_HORIZONTAL( -CURRENT_OFFSET ); ENDIF; i_append_line := 1
; MOVE_VERTICAL( 1 ); ENDIF; IF s_x = 'X' THEN s_x := ''; IF i_append_line 
<> 0 THEN APPEND_LINE; MOVE_HORIZONTAL( -CURRENT_OFFSET ); ENDIF
; i_append_line := 0; MOVE_VERTICAL( 1 ); ENDIF; IF s_x <> '' THEN i_errors 
:= i_errors + 1; s_text := CURRENT_LINE; POSITION( b_errors ); COPY_TEXT
( "The following line could not be unpacked properly:" ); SPLIT_LINE
; COPY_TEXT( s_x ); COPY_TEXT( s_text ); POSITION( b_part ); MOVE_VERTICAL
( 1 ); ENDIF; ENDLOOP; POSITION( BEGINNING_OF( b_part ) ); LOOP r_x := SEARCH
( "`", FORWARD, EXACT ); EXITIF r_x = 0; POSITION( r_x ); ERASE_CHARACTER( 1 
); COPY_TEXT( ASCII( INT( ERASE_CHARACTER( 3 ) ) ) ); ENDLOOP
; IF i_errors = 0 THEN SET( NO_WRITE, b_errors, ON ); ELSE POSITION
( BEGINNING_OF( b_errors ) ); COPY_TEXT( FAO
( "The following !UL errors were detected while unpacking !AS", i_errors
, s_file_spec ) ); SPLIT_LINE; SET( OUTPUT_FILE, b_errors, "SYS$COMMAND" )
; ENDIF; EXIT; 
$ DELETE VMS_SHARE_DUMMY.DUMMY;*
$ CHECKSUM 'FILE_IS
$ WRITE SYS$OUTPUT " CHECKSUM ", -
  F$ELEMENT( CHECKSUM_IS .EQ. CHECKSUM$CHECKSUM, ",", "failed!!,passed." )
$ RETURN
$!
$START: 
$ FILE_IS = "XAB.H"
$ CHECKSUM_IS = 956623390
$ COPY SYS$INPUT VMS_SHARE_DUMMY.DUMMY
X/*`009XAB - V3.0`009*/
X
X/*`009XABALL -- Allocation Control Extended Attribute Block Definitions`009*/
X
Xstruct`009XABALL`009`123
X       unsigned char`009xab$b_cod;`009`009
X#define`009`009`009XAB$C_ALL`00920`009`009/* XABALL type code */
X
X       unsigned char`009xab$b_bln;`009`009
V#define`009`009`009XAB$C_ALLLEN`0090x20`009`009/* XABALL block length (32 byt
Xes) */
X#define`009`009`009XAB$K_ALLLEN`0090x20
X
X`009`009unsigned`009: 16;`009`009`009/* spare */
X
X`009`009char `009*xab$l_nxt;`009`009`009/* Next XAB in chain */
X
X       unsigned char`009xab$b_aop;`009`009`009/* allocation options */
V#define`009`009`009XAB$V_HRD`0090`009`009/* fail if requestd alignmt cannot b
Xe performed */
X#define`009`009`009XAB$M_HRD`009(1 << XAB$V_HRD)
V#define`009`009`009XAB$V_ONC`0091`009`009/* locate space on cylinder boundary
X */
X#define `009`009XAB$M_ONC`009(1 << XAB$V_ONC)
V#define`009`009`009XAB$V_CBT`0095`009`009/* contiguous allocation, best try *
X/
X#define`009`009`009XAB$M_CBT`009(1 << XAB$V_CBT)
X#define`009`009`009XAB$V_CTG`0097`009`009/* contiguous allocation */
X#define`009`009`009XAB$M_CTG`009(1 << XAB$V_CTG)
X
X       unsigned char`009xab$b_aln;`009`009`009/* alignment boundary type */
X#define`009`009`009XAB$C_ANY`0090`009`009/* any type of allocation */
V#define`009`009`009XAB$C_CYL`0091`009`009/* alignment starts at cylinder boun
Xdary */
V#define`009`009`009XAB$C_LBN`0092`009`009/* allocate at specified logical blo
Xck number */
V#define`009`009`009XAB$C_VBN`0093`009`009/* allocate near specified virtual b
Xlock number */
X#define`009`009`009XAB$C_RFI`0094`009`009/* allocate near related file */
X
X       unsigned short`009xab$w_vol;`009`009`009/* relative volume number */
X       unsigned long`009xab$l_loc;`009`009`009/* allocation location */
X       unsigned long`009xab$l_alq;`009`009`009/* allocation quantity */
V       unsigned short`009xab$w_deq;`009`009`009/* default extension quantity
X */
V       unsigned char`009xab$b_bkz;`009`009`009/* bucket size used with the re
Xlative and indexed files */
V       unsigned char`009xab$b_aid;`009`009`009/* area identification number *
X/
X
X`009`009`009`009`009`009`009/* related file identification */
X       unsigned short`009xab$w_rfi0;`009`009`009/* file number */
X#define`009`009`009xab$w_rfi`009xab$w_rfi0
X
X       unsigned short`009xab$w_rfi2;`009`009`009/* seq number */
X       unsigned short`009xab$w_rfi4;`009`009`009/* rev number */
X
X`009`009unsigned`009: 16;`009`009`009/* spare */
X`009`009`125;
X
X#pragma nostandard
Vglobalref struct XABALL cc$rms_xaball;`009/* Declare initialized prototype da
Xta structures */
X
X
X/*  struct representing a 64-bit binary value expressing the date and time */
X
X#define`009XAB_DATE_TIME `009`123 unsigned`009: 32; unsigned`009: 32; `125
X
X
X/*`009XABDAT -- Date and Time Extended Attribute Block Definitions`009*/
X
Xstruct`009XABDAT`009`123
X       unsigned char`009xab$b_cod;`009`009`009
X#define`009`009`009XAB$C_DAT`00918`009/* XABDAT type code */
X
X       unsigned char`009xab$b_bln;`009`009`009
V#define`009`009`009XAB$C_DATLEN`0090x2C`009/* XABDAT block length constant -
X V3 (44 bytes) */
X#define `009`009XAB$K_DATLEN`0090x2C
V#define`009`009`009XAB$C_DATLEN_V2`0090x24`009/* XABDAT block length constant
X - V2 */
X#define`009`009`009XAB$K_DATLEN_V2`0090x24
X
X`009`009unsigned`009: 16;`009`009/* spare */
X
X`009`009char`009*xab$l_nxt;`009`009/* Next XAB in chain */
X       unsigned short`009xab$w_rvn;`009`009/* revision number */
X
X`009`009unsigned`009: 16;`009`009/* spare */
X
X   struct XAB_DATE_TIME xab$q_rdt;`009`009/* revision date and time */
X   struct XAB_DATE_TIME xab$q_cdt;`009`009/* creation date and time */
X   struct XAB_DATE_TIME xab$q_edt;`009`009/* expiration date and time */
X   struct XAB_DATE_TIME xab$q_bdt;`009`009/* backup date and time */
X`009`009`125;
X
X
Vglobalref struct XABDAT cc$rms_xabdat;`009/* Declare initialized prototype da
Xta structures */
X
X
V/*`009XABFHC -- File Header Characteristics Extended Attribute Block Definiti
Xons`009*/
X
Xstruct`009XABFHC`009`123
X       unsigned char`009xab$b_cod;`009`009`009
X#define`009`009`009XAB$C_FHC`00929`009/* XABFHC type code */
X
X       unsigned char`009xab$b_bln;`009`009`009
V#define`009`009`009XAB$C_FHCLEN`0090x2C`009/* XABFHC block length (44 bytes)
X */
X#define `009`009XAB$K_FHCLEN`0090x2C
X
X`009`009unsigned`009: 16;`009`009/* spare */
X
X`009     `009char`009*xab$l_nxt;`009`009/* Next XAB in chain */
V       unsigned char`009xab$b_rfo;`009`009/* record format and file organizat
Xion */
X       unsigned char`009xab$b_atr;`009`009/* record attributes */
X       unsigned short`009xab$w_lrl;`009`009/* longest record's length */
V       unsigned long`009xab$l_hbk;`009`009/* high virtual block in the file *
X/
X       unsigned long`009xab$l_ebk;`009`009/* end-of-file block */
V       unsigned short`009xab$w_ffb;`009`009/* first free byte in end-of-file
X block */
X       unsigned char`009xab$b_bkz;`009`009/* bucket size */
V       unsigned char`009xab$b_hsz;`009`009/* fixed length control header size
X */
X       unsigned short`009xab$w_mrz;`009`009/* maximun record size */
V       unsigned short`009xab$w_dxq;`009`009/* default file extension quantity
X */
X       unsigned short`009xab$w_gbc;`009`009/* default global buffer count */
X
X`009`009unsigned`009: 32;`009`009/* spare */
X`009`009unsigned`009: 32;`009`009/* spare */
X
V       unsigned short`009xab$w_verlimit;`009`009/* version limit for the file
X */
V       unsigned long`009xab$l_sbn;`009`009/* starting logical block number if
X contiguous */
X`009`009`125;
X
X
Vglobalref struct XABFHC cc$rms_xabfhc;`009/* Declare initialized prototype da
Xta structures */
X
X
X/*`009XABKEY -- Key Definition Extended Attribute Block Definitions`009*/
X
Xstruct`009XABKEY`009`123
X       unsigned char`009xab$b_cod;`009`009
X#define`009`009`009XAB$C_KEY`00921`009`009/* XABKEY type code */
X
X       unsigned char`009xab$b_bln;`009`009
V#define`009`009`009XAB$C_KEYLEN    0x64`009`009/* XABKEY block length (100 by
Xtes) */
V#define`009`009`009XAB$K_KEYLEN    0x64`009`009/* XABKEY for VMS V5      `032
X        */
V#define`009`009`009XAB$C_KEYLEN_V4 0x4C`009`009/* XABKEY block length (76 byt
Xes)  */
V#define`009`009`009XAB$K_KEYLEN_V4 0x4C            /* xabkey length until V5
X          */
X#define`009`009`009XAB$C_KEYLEN_V2`0090x40            /* old xabkey length */
X#define`009`009`009XAB$K_KEYLEN_V2 0x40            /* old xabkey length */
X
X`009`009unsigned`009: 16;`009`009`009/* spare */
X
X`009`009char`009*xab$l_nxt;`009`009`009/* Next XAB address in chain */
X       unsigned char`009xab$b_ian;`009`009`009/* index level area number */
V       unsigned char`009xab$b_lan;`009`009`009/* lowest level of index area n
Xumber */
X       unsigned char`009xab$b_dan;`009`009`009/* data bucket area number */
X       unsigned char`009xab$b_lvl;`009`009`009/* level of root bucket */
V       unsigned char`009xab$b_ibs;`009`009`009/* index bucket size in virtual
X blocks */
V       unsigned char`009xab$b_dbs;`009`009`009/* data bucket size in virtual
X blocks */
V       unsigned long`009xab$l_rvb;`009`009`009/* root bucket start virtual bl
Xock number */
X
X`009  unsigned char`009xab$b_flg;`009`009`009`009/* key option flag byte */
V#define`009`009`009XAB$V_DUP`0090`009`009`009/* duplicate key value allowed *
X/
X#define`009`009`009XAB$M_DUP`009(1 << XAB$V_DUP)
V#define`009`009`009XAB$V_CHG`0091`009`009`009/* may change on update (alterna
Xte keys only) */
X#define`009`009`009XAB$M_CHG`009(1 << XAB$V_CHG)
V#define`009`009`009XAB$V_NUL`0092`009`009`009/* null key value enable (altern
Xate keys only) */
X#define`009`009`009XAB$M_NUL`009(1 << XAB$V_NUL)
V#define`009`009`009XAB$V_IDX_NCMPR`0093`009`009`009/* indicates index records
X are not compressed */
X#define `009`009XAB$M_IDX_NCMPR`009(1 << XAB$V_IDX_NCMPR)
V#define`009`009`009XAB$V_KEY_NCMPR`0096`009`009`009/* indicates primary key i
Xs not compressed */
X#define`009`009`009XAB$M_KEY_NCMPR (1 << XAB$V_KEY_NCMPR)
V#define `009`009XAB$V_DAT_NCMPR`0097`009`009`009/* indicated data record is n
Xot compressed */
X#define`009`009`009XAB$M_DAT_NCMPR`009(1 << XAB$V_DAT_NCMPR)
X
X       unsigned char`009xab$b_dtp;`009`009`009/* key field data type */
V#define`009`009`009XAB$C_STG`0090`009`009/* left-justified string of unsigned
X bytes */
V#define`009`009`009XAB$C_IN2`0091`009`009/* signed 15 bit integer (2 bytes) *
X/
X#define`009`009`009XAB$C_BN2`0092`009`009/* unsigned 2-byte binary */
V#define`009`009`009XAB$C_IN4`0093`009`009/* signed 31 bit integer (4 bytes) *
X/
X#define`009`009`009XAB$C_BN4`0094`009`009/* unsigned 4-byte binary */
V#define`009`009`009XAB$C_PAC`0095`009`009/* packed decimal string (1-16 bytes
X) */
X#define`009`009`009XAB$C_IN8`0096`009`009/* signed 63 bit integer */
X#define`009`009`009XAB$C_BN8`0097`009`009/* 8 byte binary */
X#define`009`009`009XAB$C_MAXDTP`0097`009`009/* maximun legal data type */
X
X       unsigned char`009xab$b_nsg;`009`009`009/* number of key segments */
X       unsigned char`009xab$b_nul;`009`009`009/* null key character value */
V       unsigned char`009xab$b_tks;`009`009`009/* total key field size (bytes)
X */
V       unsigned char`009xab$b_ref;`009`009`009/* key of reference (0=primary
X key, 1-254=alternate keys) */
X       unsigned short`009xab$w_mrl;`009`009`009/* minimun record length */
V       unsigned short`009xab$w_ifl;`009`009`009/* index bucket fill size (byt
Xes) */
V       unsigned short`009xab$w_dfl;`009`009`009/* data bucket fill size (byte
Xs) */
X
V       unsigned short`009xab$w_pos0;`009`009`009/* key field record offset po
Xsitions */
X#define`009`009`009xab$w_pos`009xab$w_pos0
X
X       unsigned short`009xab$w_pos1;
X       unsigned short`009xab$w_pos2;
X       unsigned short`009xab$w_pos3;
X       unsigned short`009xab$w_pos4;
X       unsigned short`009xab$w_pos5;
X       unsigned short`009xab$w_pos6;
X       unsigned short`009xab$w_pos7;
X
V       unsigned char`009xab$b_siz0;`009`009`009/* key field segment sizes (by
Xtes) */
X#define`009`009`009xab$b_siz `009xab$b_siz0`009`009`009
X
X       unsigned char`009xab$b_siz1;
X       unsigned char`009xab$b_siz2;
X       unsigned char`009xab$b_siz3;
X       unsigned char`009xab$b_siz4;
X       unsigned char`009xab$b_siz5;
X       unsigned char`009xab$b_siz6;
X       unsigned char`009xab$b_siz7;
X
X`009       `009unsigned`009: 16;`009`009`009/* spare */
X
X`009`009char`009*xab$l_knm;`009`009`009/* key name buffer address */
V       unsigned long`009xab$l_dvb;`009`009`009/* first data bucket virtual bl
Xock number */
X
X       unsigned char`009xab$b_typ0;`009`009`009/* key field segment types */
X#define`009`009`009xab$b_typ`009xab$b_typ0`009`009`009
X
X       unsigned char`009xab$b_typ1;
X       unsigned char`009xab$b_typ2;
X       unsigned char`009xab$b_typ3;
X       unsigned char`009xab$b_typ4;
X       unsigned char`009xab$b_typ5;
X       unsigned char`009xab$b_typ6;
X       unsigned char`009xab$b_typ7;
X
X       unsigned char`009xab$b_prolog;`009`009`009/* prologue level */
X#define`009`009`009XAB$C_PRG1`0091`009`009/* prologue 1 */
X#define`009`009`009XAB$C_PRG2`0092`009`009/* prologue 2 */
X#define`009`009`009XAB$C_PRG3`0093`009`009/* prologue 3 */
X
X       unsigned char `009xab$b_fill_12;`009`009`009/* spare */
X       unsigned short   xab$w_fill_13;`009`009`009/* spare */
V       unsigned int     xab$l_coltbl;`009`009        /* address of collate ta
Xble */
X       unsigned int     xab$l_colsiz;`009`009`009/* size of collate table */
V       unsigned int `009xab$l_colnam;`009                /* name of collate t
Xable */
X       unsigned int     xab$l_fill_14;`009`009`009/* spare */
X       unsigned int     xab$l_fill_15;`009`009`009/* spare */
X       unsigned int     xab$l_fill_16;`009`009`009/* spare */
X `009`009`125;
X
X
Vglobalref struct XABKEY cc$rms_xabkey;`009/* Declare initialized prototype da
Xta structures */
X
X#define`009`009XAB_PROT_FIELDS `009`123 unsigned : 32; unsigned : 32; `125
X
X/*`009XABPRO -- File Protection Extended Attribute Block Definitions`009*/
X
Xstruct`009XABPRO`009`123
X       unsigned char`009xab$b_cod;`009`009`009
X#define`009`009`009XAB$C_PRO`00919`009/* XABPRO type code */
X
X       unsigned char`009xab$b_bln;`009`009`009
V#define`009`009`009XAB$C_PROLEN_V3`0090x10`009/* XABPRO block length (16 byte
Xs) version 3.0 VMS */
X#define`009`009`009XAB$K_PROLEN_V3`0090x10
V#define`009`009`009XAB$C_PROLEN`0090x58`009/* XABPRO block length (88 bytes)
X */
X#define`009`009`009XAB$K_PROLEN`0090x58
X
X`009`009unsigned`009: 16;`009`009/* spare */
X
X`009`009char`009*xab$l_nxt;`009`009/* Next XAB in chain */
X
X`009 unsigned short`009xab$w_pro;`009`009`009`009/* protection mask */
X#define`009`009`009XAB$V_SYS`0090`009`009`009/* system */
X#define`009`009`009XAB$S_SYS`0094
X#define`009`009`009XAB$V_OWN`0094`009`009`009/* owner */
X#define`009`009`009XAB$S_OWN`0094
X#define`009`009`009XAB$V_GRP`0098`009`009`009/* group */
X#define`009`009`009XAB$S_GRP`0094
X#define`009`009`009XAB$V_WLD`00912`009`009`009/* world */
X#define`009`009`009XAB$S_WLD`0094
X#define`009`009`009XAB$V_NOREAD`0090`009`009`009/* deny read access */
X#define`009`009`009XAB$M_NOREAD`009(1 << XAB$V_NOREAD)
X#define`009`009`009XAB$V_NOWRITE`0091`009`009`009/* deny write access */
X#define`009`009`009XAB$M_NOWRITE`009(1 << XAB$V_NOWRITE)
X#define`009`009`009XAB$V_NOEXE`0092`009`009`009/* deny execution access */
X#define`009        `009XAB$M_NOEXE`009(1 << XAB$V_NOEXE)
X#define`009`009`009XAB$V_NODEL`0093`009`009`009/* deny delete access */
X#define`009`009`009XAB$M_NODEL`009(1 << XAB$V_NODEL)
X
X       unsigned char`009xab$b_mtacc;`009`009/* magnetic tape accessibility */
X
X       unsigned char`009xab$b_prot_opt;`009`009/* XABPRO options field */
V#define`009`009`009XAB$V_PROPOGATE`0090`009/* propogate security attributes o
Xn $ENTER and $RENAME */
X#define`009`009`009XAB$M_PROPOGATE`009(1 << XAB$V_PROPOGATE)
X
X`009unsigned long`009xab$l_uic;`009`009/* uic code */
X
V struct XAB_PROT_FIELDS xab$q_prot_mode;`009/* RWED/mode protection for file
X */
X
X`009`009char`009*xab$l_aclbuf;`009`009/* address of users ACL buffer */`009
X       unsigned short`009xab$w_aclsiz;`009`009/* size of user's ACL buffer */
V       unsigned short`009xab$w_acllen;`009`009/* return lecngth of entire ACL
X */
X       unsigned long`009xab$l_aclctx;`009`009/* ACL context field */
X       unsigned long`009xab$l_aclsts;`009`009/* ACL return error status */
X
X`009unsigned `009: 32;
X`009unsigned `009: 32;
X`009unsigned `009: 32;
X`009unsigned `009: 32;
X`009unsigned `009: 32;
X`009unsigned `009: 32;
X`009unsigned `009: 32;
X`009unsigned `009: 32;
X`009unsigned `009: 32;
X`009unsigned `009: 32;
X`009unsigned `009: 32;
X`009unsigned `009: 32;
X
X`009`009`125;
X
Xstruct`009`123
X`009unsigned`009: 32;
X`009unsigned`009: 32;
X`009unsigned`009: 32;
X
X`009unsigned short`009xab$w_mbm;`009`009/* member number of file owner */
X`009unsigned short`009xab$w_grp;`009`009/* group number of file owner */
V`009unsigned char`009xab$b_prot_mode;`009/* first byte of protection mode fie
Xld */
X
X`009`125;
X
X
Vglobalref struct XABPRO cc$rms_xabpro;`009/* Declare initialized prototype da
Xta structures */
X
X#undef XAB_PROT_FIELDS
X
X
V/*`009XABRDT -- Revision Date and Time Extended Attribute Block Definitions`0
X09*/
X
Xstruct`009XABRDT`009`123
X       unsigned char`009xab$b_cod;`009`009`009
X#define`009`009`009XAB$C_RDT`00930`009/* XABRDT type code */
X
X       unsigned char`009xab$b_bln;`009`009`009
V#define`009`009`009XAB$C_RDTLEN`0090x14`009/* XABRDT block length (20 bytes)
X */
X#define `009`009XAB$K_RDTLEN`0090x14
X
X`009`009unsigned`009: 16;`009`009/* spare */
X
X`009`009char`009*xab$l_nxt;`009`009/* Next XAB in chain */
X       unsigned short`009xab$w_rvn;`009`009/* revision number */
X
X`009`009unsigned `009: 16;`009`009/* spare */
X
X   struct XAB_DATE_TIME xab$q_rdt;`009`009/* revision date and time */
X`009`009`125;
X
X
Vglobalref struct XABRDT cc$rms_xabrdt;`009/* Declare initialized prototype da
Xta structures */
X
X
X#undef XAB_DATE_TIME
X
X/*`009XABSUM -- Summary Extended Attribute Block Definitions`009*/
X
Xstruct`009XABSUM`009`123
X       unsigned char`009xab$b_cod;`009`009
X#define`009`009`009XAB$C_SUM`00922`009/* XABSUM type code */
X
X       unsigned char`009xab$b_bln;`009`009
V#define`009`009`009XAB$C_SUMLEN`0090x0C`009/* XABSUM block length (12 bytes)
X */
X#define`009`009`009XAB$K_SUMLEN`0090x0C
X`009
X`009`009unsigned`009: 16;`009`009/* spare */
X
X`009`009char`009*xab$l_nxt;`009`009/* Next XAB in chain */
V       unsigned char`009xab$b_noa;`009`009/* number of allocation areas defin
Xed for the file */
V       unsigned char`009xab$b_nok;`009`009/* number of keys defined for the f
Xile */
X       unsigned short `009xab$w_pvn;`009`009/* prologue version number */
X`009`009`125;
X
X
Vglobalref struct XABSUM cc$rms_xabsum;`009/* Declare initialized prototype da
Xta structures */
X
X
X/* XABTRM - Terminal Control XAB field definitions */
X
Xstruct XABTRM `123
X
X       unsigned char`009xab$b_cod;
X#define`009`009`009XAB$C_TRM`00931`009/* XABSUM type code */
X
X       unsigned char`009xab$b_bln;
X#define`009`009`009XAB$C_TRMLEN`00936`009/* length of XABTRM block */
X#define`009`009`009XAB$K_TRMLEN`00936`009/* length of XABTRM block */
X
X`009`009unsigned`009: 16;`009`009/* spare */
X
X`009`009char`009*xab$l_nxt;`009`009/* address of next block */
X`009`009char`009*xab$l_itmlst;`009`009/* item list address */
X       unsigned short`009xab$w_itmlst_len;`009/* length of item list */
X
X`009`009unsigned `009: 16;
X`009`009unsigned `009: 32;
X`009`009unsigned `009: 32;
X`009`009unsigned `009: 32;
X`009`009unsigned `009: 32;
X`009`009unsigned `009: 32;
X`009`125;
X
Vglobalref`009struct XABTRM`009cc$rms_xabtrm;`009/* declare initialized protot
Xype data structure */
X#pragma standard
$ GOSUB UNPACK_FILE
$ EXIT
------------------------------------------------------------------
Dick Sloetjes, Philips Medical Systems Nederland B.V. Dept. SWE-CF
Building QP 0127 / PO Box 10000 / 5680 DA  Best /  The Netherlands
Email: sloetjes@philtis.cft.philips.nl      DECnet MSWE::DSLOETJES
## $$ %%                Voice: +31 40 762305              %% $$ ##

