GDSX (Extended General Device Support) Manual
DCCBDECS and ULHDECSE Listings
Extended General Device Support (GDSX) Manual—529931-001
C-9
DCCBDECS Listing
 Nowaitdepth^Def  = Flags1.<12:15>#; !Parameter to open
!------------------------------------------------------------------------------!
! With each file, with the exception of $RECEIVE, opened within the GDS, an  !
! FCB is associated. The FCB serves to store open parameters for the file so !
! that it can be CHECKOPENed automatically by the GDS. In addition, the FCB !
! holds the last file management error occuring on the file as well as the  !
! list header for the chain of IOCBs associated with the file. Also included !
! in the FCB is an OWNER field. FCB.FLAGS.<0> determines whether this file !
! is opened PRIVATE (address of NUMBER parameter to ^OPEN in swappable   !
! stack or in upper memory) or PUBLIC (NUMBER parameter in GLOBAL storage). !
! For public files, the OWNER field of the FCB contains the address of the !
! NUMBER parameter to ^OPEN. For PRIVATE files, the OWNER contains the !
! address of the TCB for the task opening the file.  Files opened in PRIVATE !
! mode are automatically closed when the owning task is stopped.     !
!------------------------------------------------------------------------------!
Struct FCB^Template (*);
 Begin
 Int  File;         !File #
 Int Error;       !Last file management error #
 Int(32) Iocbh,        !List header for iocbs
    Iocbt;        ! " tailer "
!**************** Checkpointed part of the FCB ***************************
 Int  Flags;        !Pre-Exceed. For ^OPEN
 Int  Access;        !Access Mode \
 Int  Exclusion;       !Exclusion Mode  > replaces flags
 Int  Nowait;        !Nowait Depth /   variable
 Int  Sync;         !Sync depth
 Int(32) Lhaddr;        !Recipient's TCB address (ITC)
 Int(32) Owner;        !if private file -> TCB address
              !if public file  -> Address of variable
              !       where file # stored
 Int  Options;       !Open Options
 Int Blockbufid;       !Seq Block Buffer id
 Int Blockbuflen;      !Seq Block Buffer len
 Int  Public;        !if true, public file
 Int  Type[0:4];       !Device Type/subtype/etc. Now 5 words  
 Int(32) Elections;      !set < 31> bit to Use 64-bit primary keys
End;
!------------------------------------------------------------------------------!
! For each of our openers, a Requester Control Block (RCB) is allocated.  !
!------------------------------------------------------------------------------!
Struct Rcb^Template (*);
 Begin           !Non-Checkpointed Part
 Int(32) Link[0:1];     !List Links for available RCBs or
              !list of RCBs corresponding to
              !same hash bucket
 Int(32) Iocbh;        !List Header for IOCBs from this
 Int(32) Iocbt;        !Requester
!**************** Checkpointed part of the RCB ***************************
 Int(32) Tcbaddr;     !Address of TCB for This requester
 Int  Pri^Process^Handle[0:9];  !Process Handle for primary
 Int  P^Phandle[0:9]= Pri^Process^Handle;
 Int  Processid[0:3]= P^Phandle;!Processid Pre^D00 was [0:2]
 Int  Bu^Process^Handle[0:9];  !Process Handle for backup
 Int  B^Phandle[0:9]= Bu^Process^Handle;
 Int Pfile;       !Primary Requester's file number
 Int  Tcp^File  = Pfile;   !TCPs internal file # for this terminal
 Int  Bfile;        !Backup Requester's file number
 Int  Flags;        !Requester's open options
 Int  Syncdepth;       !Opener's <syncdepth> param for open
 Int  Owner;        !PROCESSACCESSID of Opener/Requester
 Int  Access^Mode;      !Requester's access mode
 Int  Exclusion^Mode;     !Requester's exclusion mode
 Int  Options;       !Requester's open options
 Int  Nowaitdepth;      !Requester's nowaitdepth
 Int  Len;         !Length of Process Descriptor
 Int Desc[0:15]; !32 bytes!  !Process Descriptor (may be unnamed)
 End;
Define P^Pid = Processid[3]#,
  B^Pid = Processid[4]#;










