HPlogo   HP 3000 Computer Systems: MPE/iX Architected Interface Facility:
Operating System Reference Manual
> Appendix B AIF Data Structures

Appendix B AIF Data Structures

MPE documents

Complete PDF

 

Table of Contents

Index

 

⇓ Page Bottom

buffer_type
buffer_info_type
clock_type
datestr_type
date_type
device_name_type
directory_name_type
drives_type
dstsrec_type
filename_type
fnamerec_type
fnumpid_type
i32rec_type
i64rec_type
item_array_type
itemstatus_array_type
itemnum_array_type
jskey_type
jsdev_type
jsnum_type
logon_desc_type
longint_type
max_pathlen
max_pathname_type
message_buffer_type
media_label_type
mm_side_type
mm_slot_info_type
mm_slot_state_type
mpe_name_type
pac8
pac16
pac18
pac32
pac34
pac256
path_identifier
path_id_rec_type
pathname_type
pid_type
recfnumpid_type
search_key_type
sel_eq_type
spf_id_type
status_type
storage_slot_type
t_vol_class_name
t_volume_name
t_vol_set_name
ufidrec_type
ufid_type
key_workgroup_type
pac20

⇑ Page Top

 

Status Messages for Workgroup Information

Appendix C Programming Examples


 bit1        =     0 .. 1;
 bit2        =     0 .. 3;
 bit8        =     0 .. 255;
 bit14       =     0 .. 16383;
 bit16       =     0 .. 65535;
 bit31       =     0 .. 2147483647;
  

 buffer_type =

   record
      case boolean of
         true:   (buff_str : string[n]);
         false:  (buff_len : integer;
                  buffer   : packed array [1..n]);
   end;

 Array size: 4 + n + 1 bytes

 n represents a user-defined size.
  

 buffer_info_type =

    record
       buffer_offset  : integer; (0.0 @ 4.0)
       pathname_len   : integer; (4.0 @ 4.0)
    end;

 Record size: 8 bytes
 Alignment:   4 bytes
  

 clock_type =

    crunched record
    case bit32 of 
       1: ( hour        : bit8;     (0.0 @ 1.0)
            min         : bit8;     (1.0 @ 1.0)
            sec         : bit8;     (2.0 @ 1.0)
            ten_sec     : bit8;     (3.0 @ 1.0)
       2: ( clock_funct : bit32;    (0.0 @ 4.0)  
    end;

 Record size: 4 bytes
 Alignment:   4 bytes
  

 datestr_type =

    record
       month_str    : packed array[1..3] of char;  (0.0 @ 3.0)
       day_of_week  : packed array[1..3] of char;  (3.0 @ 3.0)
    end;

 Record size: 6 bytes
 Alignment: 1 byte
  

 date_type = 

    record
       year         : integer;  (0.0 @ 4.0)
       month        : integer;  (4.0 @ 4.0)
       day_of_month : integer;  (8.0 @ 4.0)
    end;

 Record size: 12 bytes
 Alignment: 4 bytes 
  

 device_name_type    =

    packed array[1..18] of char;                 (0.0  @ 18.0)

 Array size: 18 bytes
 Element size: 1 byte
 Alignment : 1 byte
  

  directory_name_type  =

    record
       user    : packed array[1..16] of char ;    (0.0  @ 16.0)
       group   : packed array[1..16] of char ;    (16.0 @ 16.0)
       account : packed array[1..16] of char ;    (32.0 @ 16.0)
    end ;

 Record size: 48 bytes
 Alignment  :  4 bytes

 The values for the user, group, and account must be upper-case.
  

 drives_type =

    record
       cnt          : integer;
       drives_ldevs : array [1..n] of integer;
    end;

 n represents a user-defined size.
 Record size : 4 + 4n bytes
 Alignment   : 4 bytes
  

 dstsrec_type  =

    record
       cnt     : integer;                         (0.0 @ 4.0)
       dstinfo : array[1..n] of record
                    dstno   : integer;                (0.0 @ 4.0)
                    dstva   : anyptr;                 (4.0 @ 8.0)
                 end ;
    end ;


 Record size: 12n + 4 bytes
 Alignment  : 4 bytes

 n represents a user-defined size.
  

 filename_type   =

    record
       filename  : packed array[1..16] of char;      (0.0  @ 16.0)
       group     : packed array[1..16] of char;      (16.0 @ 16.0)
       account   : packed array[1..16] of char;      (32.0 @ 16.0)
    end ;


 Record size: 48 bytes
 Alignment  : 1 byte

 All three arrays are always returned padded, with blanks on the right.
 Most interfaces accept them, when a file name is input, to be flushed
 with blanks on the right.
  

 fnamerec_type       =

    record
       cnt       : integer
       fnames    : array[1..n] of filename_type;
    end;


 Record size: 4 + 20n bytes
 Alignment  : 4 bytes
  

 fnumpid_type  =

    record
       fnum    : integer;                               (0.0 @ 4.0)
       pid     : longint_type;                          (4.0 @ 8.0)
    end ;

 Record size: 12 bytes
 Alignment  : 4 bytes
  

 i32rec_type       =

    record
       cnt      : integer;
       ints     : array[1..n] of integer;
    end;

 Record size: 4 + 4n bytes 
 Alignment  : 4 bytes
  

 i64rec_type      =

    record
       cnt      : integer;
       lints    : array[1..n] of longint;
    end;

 Record size: 4 + 8n bytes
 Alignment  : 4 bytes
  

 item_array_type  =

    array[1..n] of globalanypointer;

 Array size: 8n bytes
 Element size: 8 bytes
 Alignment: 4 bytes

 n represents a user defined size.
  

 itemstatus_array_type  =

    array[1..n] of status_type;

 Array size: 4n bytes
 Element size: 4 bytes
 Alignment:  4 bytes

 n represents a user defined size.
  

 itemnum_array_type  =

    array[1..n] of integer;

 Array size: 4n bytes
 Element size: 4 bytes
 Alignment:  4 bytes

 n represents a user defined size.
  

 jskey_type          =

    integer;                                           (0.0 @ 4.0)

 Alignment  : 4 bytes
  

 jsdev_type  =

    record
       device_class  : boolean;                         ( 0.0 @ 1.0 )
       output_device : integer;                         ( 4.0 @ 4.0)
    end ;

 Record size: 8 bytes
 Alignment  : 4 bytes
  

 jsnum_type          =

    packed record
       js_type : bit2;                                  ( 0.0 @ 0.2 )
       js_num  : bit14;                                 ( 0.2 @ 1.6 )
       js_ext  : shortint;                              ( 2.0 @ 2.0 )
    end ;

 Record size: 4 bytes
 Alignment  : 4 bytes 

 The js_type field can have a value of 1 or 2; 1 indicates a session
 and 2 indicates a job. The js_num field can have any value from 1-16383.
  

 logon_desc_type   =

    record
       job_name    : pac16;                             ( 0.0 @ 16.0)
       acct_name   : pac16;                             (16.0 @ 16.0)
       acct_pass   : pac16;                             (32.0 @ 16.0)
       user_name   : pac16;                             (48.0 @ 16.0)
       user_pass   : pac16;                             (64.0 @ 16.0)
       group_name  : pac16;                             (80.0 @ 16.0)
       group_pass  : pac16;                             (96.0 @ 16.0)
    end ;

 Record size: 112 bytes
 Alignment  : 1 byte
  

 longint_type  =

    record
       left    : integer;                               (0.0 @ 4.0)
       right   : integer;                               (4.0 @ 4.0)
    end ;

 Record size: 8 bytes
 Alignment  : 4 bytes
  

 max_pathlen =  1024

 This value can be retrieved from AIFSCGET, item 3062.
  

 max_pathname_type =

    packed array [ 1 .. max_pathlen ] of char;

 Array size: max_pathlen bytes   Element Size: 1 byte
 Alignment: 1 byte
  

 message_buffer_type   =

    packed array[1..n] of char;

 Array size: n bytes
 Element size: 1 byte
 Alignment : 1 byte

 The type is user-defined. n represents any number <= 32767.
  

 media_label_type =

    record
       media_name : packed array [1..32] of char;      (0.0 @ 20.0)
       subname1   : packed array [1..16] of char;     (20.0 @ 10.0)
       subname2   : packed array [1..16] of char;     (20.0 @ 10.0)
    end;

 Record size : 64 bytes
 Alignment   : 1 byte
  

 mm_side_type =

    record
       media_label  : media_label_type;               (0.0 @ 40.0)
       volume_label : packed array[1..8] of char;    (40.0 @ 8.0)
    end;

 Record size : 72 bytes
 Alignment   : 1 byte
  

 mm_slot_info_type =

    record
       slot_number : integer;                 (0.0 @ 4.0)
       slot_state  : mm_slot_state_type;      (4.0 @ 1.0)
       side_a      : mm_side_type;            (5.0 @ 48.0)
       side_b      : mm_side_type;           (4D.0 @ 48.0)
    end;

 Record size : 152 bytes
 Alignment   : 4 bytes
  

 mm_slot_state_type =

   (empty_slot, full_slot, rsvd_slot);
  

 mpe_name_type      =

    packed array[1..16] of char;       (0.0 @ 16)

 Array size: 16 bytes
 Alignment : 1 byte
  

 pac8               =

    packed array[1..8] of char;                  (0.0 @ 8.0)

 Array size: 8 bytes
 Element size: 1 byte
 Alignment : 1 byte
  

 pac16               =

    packed array[1..16] of char;                 (0.0 @ 16.0)

 Array size: 16 bytes
 Element size: 1 byte
 Alignment : 1 byte
  

 pac18               =

    packed array[1..18] of char;                 (0.0 @ 18.0)

 Array size: 18 bytes
 Element size: 1 byte
 Alignment : 1 byte
  

 pac32               =

    packed array[1..32] of char;                 (0.0 @ 32.0)

 Array size: 32 bytes
 Element size: 1 byte
 Alignment : 1 byte
  

 pac34               =

    packed array[1..34] of char;                 (0.0 @ 34.0)

 Array size: 34 bytes
 Element size: 1 byte
 Alignment : 1 byte
  

 pac256               =

    packed array[1..256] of char;                (0.0 @ 256.0)

 Array size: 256 bytes
 Element size: 1 byte
 Alignment : 1 byte
  

 path_identifier   =  $alignment 4$

    record
       ufid        :  ufid_type;
       link_id     :  bit32;
       parent_ufid :  ufid_type;
    end;

 Record size: 44 bytes
 Alignment : 4 bytes
  

 path_id_rec_type   =  $alignment 4$

    record
       cnt         :  integer;
       path_ids    :  rec [1..n] of path_identifier;
    end;

 n represents a user-defined size.
 Record size: 4 + 44n bytes
 Alignment : 4 bytes
  

 pathname_type =

    record
       case boolean of
          true:  (path_str :  string [n]);
          false: (path_rec :  record
                    length      :  integer;
                    pathname    :  packed array [1..n] of char;
                  end);
    end;

 Record size : 4 + n + 1 bytes
 Alignment   : 4 bytes

 n represents a user-defined size.    Currently the maximum pathname
 length is 1024 bytes.
  

 pid_type  =

    record
       left    : integer;                               (0.0 @ 4.0)
       right   : integer;                               (4.0 @ 4.0)
    end ;

 Record size: 8 bytes
 Alignment  : 4 bytes
  

 recfnumpid_type  =

    record
       count   : integer;                               (0.0 @ 4.0)
       fnumpid : array[1..n] of fnumpid_type            (4.0 @ 12n.0)
    end ;

 Record size: 12n + 4 bytes
 Alignment  : 4 bytes

 n represents a user-defined size.
  

 search_key_type             =

    record
       case integer of
          1: ( key_js_num  : integer );                  (0.0 @ 4.0)
          2: ( key_pid     : longint_type );             (0.0 @ 8.0)
          3: ( key_ufid    : ufid_type );                (0.0 @ 20.0)
          4: ( key_fname   : filename_type );            (0.0 @ 48.0)
          5: ( key_dname   : directory_name_type );      (0.0 @ 48.0)
          6: ( key_sfnum   : integer );                  (0.0 @ 4.0)
          7: ( key_portid  : integer );                  (0.0 @ 4.0)
          8: ( key_portnm  : pac16 );                    (0.0 @ 16.0)
          9: ( key_plfd    : localanyptr );              (0.0 @ 4.0)
         10: ( key_js_ind  : integer );                  (0.0 @ 4.0)
         11: ( key_pid_ind : integer );                  (0.0 @ 4.0)
         12: ( key_ldev    : integer );                  (0.0 @ 4.0)
         13: ( key_va      : bit64   );                  (0.0 @ 8.0)
         14: ( key_int     : integer );                  (0.0 @ 4.0)
         15: ( key_class   : pac16   );                  (0.0 @ 16.0)
         16: ( key_pathname: max_pathname_type );        (0.0 @ 1024.0)
    end ;

 Record size: 1024 bytes
 Alignment  : 4 bytes
  

 sel_eq_type       =

    record
       stringlen: integer ;                            (0.0 @ 4.0) 
       str : packed array[1..280] of char ;            (4.0 @ 280.0)
       housekeep: bit8;                                (280.0 @ 1.0)
    end ;

 Record size: 288 bytes
 Alignment  : 4 bytes
  

 spf_id_type       =

    packed record
       case boolean of
          true: ( id_number  : bit31;                  (0.0 @ 3.7)
                  i_or_o_flag: bit1);                  (3.7 @ 0.1)
          false: ( all: integer);                      (0.0 @ 4.0)
    end ;

 Record size: 4 bytes
 Alignment  : 4 bytes
  

 status_type     =

    record
       case boolean of
          true  : ( all: integer );                     (0.0 @ 4.0)
          false : ( info  : shortint;                   (0.0 @ 2.0)
                    subsys: shortint );                 (2.0 @ 2.0)
    end ;

 Record size: 4 bytes
 Alignment  : 4 bytes
  

 storage_slot_type =

    record
       lower_limit  : integer;
       upper_limit  : integer;
       slot_info    : array [1..n] of mm_slot_info_type;
    end;

 n represents a user-defined size.
 Record size : 4 + 4 + 152n
 Alignment   : 4 bytes
  

 t_vol_class_name =

    packed array[1..32] of char;                         (0.0 @ 32.0)

 Array size : 32 bytes
 Alignment  : 1  byte
  

 t_volume_name    =

    packed array [1..16] of char;                        (0.0 @ 16.0)

 Array size : 16 bytes
 Alignment  : 1  byte
  

 t_vol_set_name   = 

    packed array[1..32] of char;                        (0.0 @ 32.0) 
  

 ufidrec_type     =

    record
       cnt          : integer;
       ufids        : array[1..n] of ufid_type;
    end; 
  

 ufid_type        =

    record
       ufid : packed array[1..20] of char;     (0.0 @ 14.0)
    end ;

 Array size: 20 bytes
 Element size: 1 byte
 Alignment : 4 bytes
  

 key_workgroup_type =

    record
       wgindex           : integer;            (0.0 @ 4.0)
       creation_count    : integer;            (4.0 @ 4.0)
    end;

 Record Size  : 8 bytes
 Alignment    : 4 bytes
  

 pac20 =

    packed array[1..20] of char;          (0.0 @ 14.0)

 Array size: 20 bytes
 Element size: 1 byte
 Alignment : 1 byte
  



Status Messages for Workgroup Information

Appendix C Programming Examples