GDSX Manual
DCCBDECS and ULHDECSE Listings
Extended General Device Support (GDSX) Manual–134303
C-7
DCCBDECS Listing
 Struct Iocb^info;
  Begin
  Unsigned(1) Io^Sysbuf;   !if true, $RECEIVE request data is
          !in SYSPOOL or SHARED POOL
  Unsigned(10) Cpu;    !Originating CPU for $RECEIVE request
  Unsigned(1) Ext^Io;    !if true, I/O operation initiated
          !by extended I/O procedure
  Unsigned(1) Type^Rcv;   !if true, $RECEIVE IOCB
          !if false, File IOCB or DCB
  Unsigned(1) Type^Dcb;   !if true, File DCB
          !if false, File IOCB or $RCV
  Unsigned(1) Type^Iocb;   !if true, File IOCB
          !if false, $RECEIVE $RCV or DCB
 End;
 Int Cb^Type   = Iocb^Info;!Identifies cb^openid->@iocb or @dcb
          !and if msgtag is receivedepth
          !and if bufaddr in EXT or LOC memory
 Int(32) Openid;      !Openid of ITC linker or @dcb
 Int(32) Cb^Openid  = Openid;  !
 Int(32) Rcbaddr;     !$RECEIVE rcb address
 Int Err,      !File management error #
   Pid;      !CPU & PIN of requester, $rcv only
End;
Literal
 Tcblink^OffsetX = ($Offset(Iocb^Template.Tcblink) '+' 1) '>>' 2,
 Fcblink^OffsetX = ($Offset(Iocb^Template.Fcblink) '+' 1) '>>' 2,
 Lhlink^OffsetX  = ($Offset(Iocb^Template.Lhlink) '+' 1) '>>' 2;
Define
 Iocb^Adr =  Iocb^Info.Type^Iocb#,!set if openid contains @iocb
 Dcb^Adr =  Iocb^Info.Type^Dcb #,!set if openid contains @dcb
 Rcv^Adr =  Iocb^Info.Type^Rcv #,!set if msgtag contains @rcvbuf
  Extaddr  = Lb.Ext^Addr  #,!Not used for local buffer address
 Bufaddr = Lb.Buf^Addr   #;!Used by local buffer to hold address
Literal
  Io^Avail   = 0,     !IOCB is available
  Io^Queued  = 1,    !IOCB is queued for normal file or
          !$RECEIVE IOCB in input queue for
          !which no READUPDATE has been issued
  Io^Itc^Queued = 2,    !IOCB is queued for ITC file
 Io^Signal  = 3,    !Signaltimeout in process
 Io^Breakowner = 4,    !Break ownership IOCB
  Io^Pending  = 5,     !IOCB has completed but has
          !not yet passed to task via ^Awaitio
 Io^Active  = 6,    !ITC IOCB than has been passed
          !to listener but is not yet completed
          !for linker
  Io^Canceled  = 7,    !Canceled ITC IOCB
 Io^Receive  = 8,    !$receive requests from temp buf
 Io^Reply  = 9;    !$receive that has been passed to task
Literal        !I/O Operation Types
  Sysmsg^Operation    = 0,
  Control^Operation    = 4!1!, Setmodenowait^Operation = 5 !2!,
  Write^Operation     = 1!3!, Read^Operation   = 2 !4!,
  Writeread^Operation    = 3!5!, Readupdate^Operation  = 6,
  Readlock^Operation   = 7,  Readupdatelock^Operation = 8,
 Lockrec^Operation   = 9,  Unlockrec^Operation  = 10,
  Open^Operation    = 11, Writeupdate^Operation = 12,
  Writeupdateunlock^Operation = 13, Endtrans^Operation  = 14,
  Signaltimeout^Operation  = 15,  Newprocess^Operation  = 16,
  Deviceinfo2^Operation   = 17,  Pathsend^Operation   = 18,
  Lockfile^Operation   = 19, Unlockfile^Operation   = 20,
  Setparam^Operation   = 21;
?Section Dcb^Layout
!******************************************************************************!
! For each device managed by GDS, there is an entry in the DCB-table   !
! with the following format.            !
!******************************************************************************!
Struct Dcb^Template (*);    !Subdevice table entry (EXT MEM)










