Record Formats
This chapter contains the record formats used by Director. Where
appropriate, the fields are described. The record formats are
given in alphabetical order. There are also the following constants:
%constinteger ISEPCH = '@'; %conststring(1) ISEP = "@"
%constinteger NSEPCH = ':'; %conststring(1) NSEP = ":"
AFDF
%recordformat %c
AFDF (%string(11)NAME, %integer TSN,
%halfinteger PGS, DATE, LAST RESTORE,
%byteinteger S0, S1, COUNT, EEP, PHEAD, TYPE,
%integer CHAP)
This the format of a file descriptor in archive index
%ownrecord(AFDF)%arrayformat %c
AFDSF (1:32768)
This is the format of the record array
COMF
This is the Supervisor Communications Record Format, defined in EMAS
2900 Supervisor Note 15.
%recordformat %c
CDRF(%byteinteger DAP NO, DAP BLKS, DAP PROCESS, DAP STATE,
%integer DAP1, DAP INT)
%recordformat %c
COMF(%integer OCPTYPE, IPLDEV, SBLKS, SEPGS,
NDISCS, DLVNADDR, GPCTABSIZE, GPCA,
SFCTABSIZE, SFCA, SFCK, DIRSITE,
DCODEDA, SUPLVN, TOJDAY, DATE0,
DATE1, DATE2, TIME0, TIME1,
TIME2, EPAGESIZE, USERS, CATTAD,
SERVAAD, %byteinteger NSACS, RESV1, SACPORT1, SACPORT0,
NOCPS, RESV2, OCPPORT1, OCPPORT0,
%integer ITINT,
CONTYPEA, GPCCONFA, FPCCONFA, SFCCONFA,
BLKADDR, RATION, SMACS, TRANS,
%longinteger KMON, %integer DITADDR, SMACPOS,
SUPVSN, PSTVA, SECSFRMN, SECSTOCD,
SYNC1DEST, SYNC2DEST, ASYNCDEST, MAXPROCS,
KINSTRS, ELAPHEAD, COMMSRECA, STOREAAD,
PROCAAD, SFCCTAD, DRUMTAD, TSLICE,
FEPS, MAXCBT, PERFORMAD,
%record(CDRF)%array CDR(1 : 2),
%integer LSTL, LSTB, PSTL,
PSTB, HKEYS, HOOT, SIM,
CLKX, CLKY, CLKZ, HBIT,
SLAVEOFF, INHSSR, SDR1, SDR2,
SDR3, SDR4, SESR, HOFFBIT,
BLOCKZBIT, BLKSHIFT, BLKSIZE, END)
%constrecord(COMF)%name COM = X'80000000' + 48 << 18
DDTF
The Disc Device Table Format, described in EMAS 2900 Supervisor
Note 18.
%recordformat %c
DDTF(%integer SER, PTS, PROPADDR, STICK,
CCA, RQA, LBA, ALA,
STATE, IW1, CONCOUNT, SENSE1,
SENSE2, SENSE3, SENSE4, REPSNO,
%halfinteger SBASE, BASE, %integer ID, DLVN, MNEMONIC,
%string (6) LAB, %byteinteger MECH)
%ownbyteintegerarrayformat DLVNAF(0:99)
DIRCOM
On the IPL disc, the first X'900 pages are not covered by the 'BITMAP'
this means that as many bits (=288 bytes) may be used for other
purposes. All discs have X'140 bits (40 bytes) available. The
remaining 248 bytes are described by this format. The address of the
record is given by SYSAD(DIRCOMKEY, -1).
%constinteger DIRCOM KEY = 5
%constinteger DIRCOMSIZE = 136
%recordformat %c
DIRCOMF(%integer DIRLOG SEMA, FEP SEMA,
{..8} %string(6)%array DAP USER(0 : 2),
{.20} %integer SUBSYS SITE COUNT, %string(19)DEFAULT SUBSYS,
{.38} %integer STUDENT SITE COUNT, %string(19)DEFAULT STUDENT,
{.50} %string(6)%array DAP BATCH USER(0 : 1),
{.60} %integerarray DAP INTEGER(1 : 6))
{.78}
integer(1) is CLAIM Q LIMIT
2 INTER
3 LO BATCH 0
4 HI BATCH 0
5 LO BATCH 1
6 HI BATCH 1
DISCDATAF
%recordformat %c
DISCDATAF(%integer START, BITSIZE, NNTSTART, NNTSIZE,
NNTTOP, NNTHASH, INDEXSTART, FILESTART,
END)
This format is used in the procedure FBASE2 to return a record giving
addresses and lengths of the various parts of the disc.
START indicates whether an IPL disc or not, value X40 or X800
BITSIZE size of the bitmap, X1000, X2000 or X5000
NNTSTART where the NNT starts
NNTSIZE the size of the name-number table, X1000, X2000 or X4000
NNTTOP the NNT is a record array declared 0:n, this is n: 340, 681 or 1364
NNTHASH the largest prime less than NNTTOP, 331, 677 or 1361
INDEXSTART the total number of pages used for bitmaps and NNTs
FILESTART the number of pages used for bitmaps, NNTs and indexes
END the highest numbered page
FDF
%recordformat %c
FDF (%string(11)NAME,
%integer SD,
%halfinteger PGS, H0,
%byteinteger CODES, CODES2, DAYNO, USE,
OWNP, EEP, PHEAD, ARCH,
CCT, SSBYTE, S0, S1)
This the format of a file descriptor in an online file index
Note:
CODES CODES2
1 unava wrconn
2 offer
4 temp oldgen
8 vtemp wsallow
16 chersh comms ???
32 privat disc ???
64 violat stack ???
128 noarch dead ???
%constinteger FDSIZE = 32
!
%ownrecord(FDF)%arrayformat %c
FDSF (1:32768)
FF
%recordformat %c
FF (%integer SDSTART, PDSTART, FDSTART, SEMA,
RESERVE1, RESERVE2, SEMANO, RESTORES,
%string(6)OWNER, %byteinteger SIZE, %string(11)NAME,
%byteinteger FSYS, FIPHEAD, TEMPFILES, EEP,
%integer FILES, MAXFILE, MAXKB, CHERFILES,
CHERKB, TOTKB, TEMPKB, CHKSUM,
FILES0, FILES1, AFILES, ATOTKB,
ASEMA,
%byteinteger ATTRIBUTES, DAY42)
only 26 more bytes spare
PDSTART etc Add to FINDAD to get addr of array
FILES Number of usable files, ie not 'oldgens'
HH
%recordformat %c
HF (%string(6)OWNER, %byteinteger MARK,
%integer SPARE1, MSGSEMA,
SPARE2, SPARE3, INUTS, IINSTRS,
%byteinteger ACR, DIRVSN, SIGMON, PASSFAILS,
IMAX, BMAX, TMAX, STKKB,
IUSE, BUSE, ISESSM, GPFSYS,
FSYS, SB0, SB1, TYPE,
%integer TOP, DWSPK, BWSPK, BINSTRS,
TRYING, DINSTRS, IPTRNS, BPTRNS,
IMSECS, BMSECS, NKBIN, NKBOUT,
MAIL COUNT, CONNECTT, DIRMON, LASTLOGON,
LAST NON INT START, TELL REJ, DWSPDT, BWSPDT,
SPARE4, SPARE5, DAPSECS, SI3,
%longinteger DWSP, BWSP,
%string(6)GPHOLDR,
%string(31)SURNAME, DELIVERY,
%string(18)BATCHSS, BASEFILE, STARTF, TESTSS,
%string(11)LOGFILE, MAIN,
%string(15)DEFAULTLP,
%string(63)DATA,
%string(6)SUPERVISOR,
%string(15)GATEWAY ACCESS ID)
Logfile formats
%constinteger TOPLOG = 5
%constinteger TOP FE NO = 7
%constinteger ITP = 0
%constinteger X29 = 1
%constinteger FEP IO BUFF SIZE = 2048; ! bytes in each control buffer
%constinteger MAXTCPNAME = 15 {TCP-name length}
{ERCC TCP names have max 23 chars).
%recordformat %c
FEP DETAILF(%integer INPUT STREAM, OUTPUT STREAM,
IN BUFF DISC ADDR, OUT BUFF DISC ADDR,
IN BUFF DISC BLK LIM, OUT BUFF DISC BLK LIM,
IN BUFF CON ADDR, OUT BUFF CON ADDR,
IN BUFF OFFSET, OUT BUFF OFFSET, IN BUFF LENGTH, OUT BUFF LENGTH,
INPUT CURSOR, OUTPUT CURSOR)
%recordformat %c
FEPF(%record(FEP DETAILF)%array FEP DETAILS(ITP:X29), %integer AVAILABLE)
%recordformat %c
LF(%string(11)NAME, %integer FSYS, DISC ADDR, STATE)
%recordformat %C
PROCDATF(%string(6)USER, %string(MAXTCPNAME)TCPNAME, %byteinteger LOGKEY,
%byteinteger INVOC, PROTOCOL, NODENO, FSYS,
%integer LOGSNO,
%byteinteger SITE, REASON, CONSOLE1, CONSOLE2,
%integer ID, PROCESS, PREV WARN, SESSEND,
%byteinteger GETMODE, PREEMPT, BLNK, LINK)
%recordformat %c
LOGF HDF(%integer LOGMAPST,SPARE0,
%byteinteger FREEHD,LIVEHD,BACKHD,SPARE,
%integer FES FOUND,
%byteintegerarray FE USECOUNT(0:TOP FE NO),
%record(LF)%array LOGS(0:TOPLOG),
%record(FEPF)%array FEPS(0:TOP FE NO),
%record(PROCDATF)%array PROCLIST(0:255),
%integer LEND)
%recordformat %c
TMODEF(%halfinteger FLAGS1, FLAGS2,
{.04} %byteinteger PROMPTCHAR, ENDCHAR,
{.06} %bytearray BREAKBIT1(0:3) {%or %halfintegerarray BREAKBIT2(0:1))} ,
{.0A} %byteinteger PADS, RPTBUF, LINELIMIT, PAGELENG,
{.0E} %byteintegerARRAY TABVEC(0:7),
{.16} %byteinteger CR, ESC, DEL, CAN,
{.1A} %byteinteger FLAGS, INTERNAL STATE, LEADIN1, LEADIN2, XLO, XHI)
{.20}
NNF
%recordformat %c
NNF(%string(6)NAME, %byteinteger KB, TAG, MARKER, %halfinteger INDNO)
DIROWNF
Format describing Directors 'own' variables
%constinteger TOPCONENT = 95
%recordformat %c
CTF(%string(30)FULL, %byteinteger FSYS, NODISCO, INDEX)
%recordformat %c
DIROWNF(%byteintegerarray CPOINT(0:255),
%record(CTF)%array CONLIST(0 : TOPCONENT),
%string(63)SEMAHOLDER)
PARMF
The standard format for system messages
%recordformat %c
PARMF(%integer DEST, SRCE,
(%integer P1, P2, P3, P4, P5, P6 %or %string(23)S))
PDF
%recordformat %c
PDF (%string(6)NAME, %byteinteger PERM, LINK)
%constinteger PDSIZE = 9
%ownrecord(PDF)%arrayformat PDSF(1:512)
SDF
%recordformat SDF(13-bit LINK, 19-bit DA)
%ownintegerarrayformat SDSF(1:8191)
UINFF
%recordformat %c
UINFF (%string(6)USER, %string(31)JOBDOCFILE,
{.28} %integer MARK, FSYS,
{.30} PROCNO, ISUFF, REASON, BATCHID,
{.40} SESSICLIM, SCIDENSAD, SCIDENS, STARTCNSL,
{.50} AIOSTAT, SCT DATE, SYNC1 DEST, SYNC2 DEST,
{.60} ASYNC DEST, AACCT REC, AIC REVS,
{.6C} %string(15)JOBNAME,
{.7C} %string(31)BASEFILE,
{.9C} %integer PREVIC,
{.A0} ITADDR0, ITADDR1, ITADDR2, ITADDR3,
{.B0} ITADDR4, STREAM ID, DIDENT, SCARCITY,
{.C0} PREEMPTAT, %string(11)SPOOLRFILE,
{.D0} %integer FUNDS, SESSLEN, PRIORITY, DECKS,
{.E0} DRIVES, PART CLOSE,
{.E8} %record(TMODEF)TMODES,
{108} %integer PSLOT,
{10C} %string(63)ITADDR,
{14C} %integerarray FCLOSING(0:3), %integer CLO FES,
{160} %integer OUTPUT LIMIT, DAPSECS, %longinteger DAPINSTRS,
{170} %integer OUT, %string(15)OUTNAME,
{184} %integer HISEG,
{188} %string(31)FORK,
{1A8} %integer INSTREAM, OUTSTREAM,
{1B0} %integer DIRVSN, DAP NO, SCT BLOCK AD,
%integer PROTOCOL,
%integer UEND)
%ENDOFLIST
USER The six-character name of the process owner.
JOBDOCFILE For a batch process (see REASON) the name of a file
containing commands to be executed.
MARK Currently 1, to be used in achieving forward
compatibility if this record format is to be
drastically changed.
FSYS The file system (disc number) on which the user's
file index and files reside.
PROCNO The process number.
ISUFF The "invocation number" for the process. This number
is appended to the names of workfiles so that, in the
case of multiple invocations of a process, each
invocation uses a unique set of names.
REASON This gives the reason for the creation of the
process:
0 = interactive log-on
1 = started from an OPER console
2 = started as a batch (non-interactive) process by
SPOOLR.
3 = test process
4 = D/NEWSTART from OPER console
BATCH ID A unique integer identifier associated with the
batch job (for REASON=2).
SESS IC LIM The maximum number of thousands of machine
instructions which may be executed during the
current session by the process. For interactive
sessions this is currently a very large number. For
batch sessions it is a number given when a job is
submitted to the SPOOLR process for queuing and
subsequent execution. If this limit is reached by
the process, it is terminated with a message at the
main Oper console:
SIGNAL FAIL 4
A subsystem should preferably guard against this
occurrence by keeping an eye on the number of
instructions executed in the current session, using
Director procedure DSFI (TYPE=21).
SC IDENS AD, These are used to acquire access to the Director
SC IDENS procedures, as described in Chapter 4.
STARTCNSL Gives the logical number of the Oper console from
which the process was started (for REASON=1).
AIOSTAT The address of a record describing interactive I/O
status. The format of the record is:
(integer IAD, string(15) INTMESS,
integer INBUFLEN, OUTBUFLEN, INSTREAM, OUTSTREAM)
SCT DATE This may be used in conjunction with SC IDENS AD and
SC IDENS.
SYNC1 DEST The three service numbers allocated by the
SYNC2 DEST Supervisor to the local process (see Ref. 10).
ASYNC DEST
AACCTREC The address of a record, visible at ACR 15, of
format:
(longinteger MICROSECS, integer PTURNS, KINSTRS)
The MICROSECS field holds the number of microseconds
of OCP time used by the process.
The KINSTRS field of this record contains the number
of K instructions (1K=1024) executed during the
current session, it is updated only at calls of
certain Director functions.
The PTURNS field contains the total number of page
turns performed on behalf of the process.
AICREVS The address of a word containing the number of
"revolutions" of the IC machine register (or
"IC-register-fulls") to be expended (in addition to
the current value of the IC register) before an
instruction-counter interrupt is given to the user
process.
The fields above may be used to determine a number of K instructions
executed during the current session using the formula:
AACCTREC_KINSTRS + (UINF_PREVIC - GETIC)
where GETIC is
(Image store 6)>>10 + integer(UINF-AICREVS)<<14
(with certain modifications depending on the state of the IC carry
bit).
JOBNAME A character string identifier associated with the
batch job when it was submitted to the SPOOLR
process (for REASON=2).
BASEFILE NAME The name of the basefile in use by the process.
PREVIC The value of the current instruction-execution limit
(in K instructions) at the time the KINSTRS field in
the ACCT REC field was last updated.
ITADDR0-4 Reserved for a full network address of the process's
interactive terminal.
STREAM ID
D IDENT
SCARCITY The number of users on the System at and above
which the machine resource is deemed to be scarce
(the funds field of the process owner's index header
is decremented according to the local charging
formula for interactive sessions while the number of
System users is greater than or equal to this value)
This value is kept in the RATION field of the COM
record (in public segment 48), see below.
PREEMPT AT The number of users on the System at and above which
an interactive user currently having no funds
is eligible for pre-emption (i.e. automatic
logging-off) by interactive users with positive
funds. This value is also kept in
the RATION field in the COM record (in public
segment 48).
The four bytes of the integer COM_RATION hold the following data
(most significant byte = byte zero):
0 number of interactive users at and above which
resources for interaction are deemed to be scarce
(SCARCITY)
1 number of interactive users at and above which a
user having no scarce resource units may be pre
-empted (logged off with 5 minutes' warning)
because a new user with some scarce-resource units
has logged on (PREEMPT A)
2 spare (zero)
3 current number of interactive processes
These values should be used in preference to those in the UINF
record, the fields in UINF are to be withdrawn.
SPOOLR FILE is used by Director during batch process
start up and has no subsequent relevance
FUNDS the current number of funds
held by the process owner (or his group-holder)
This field is relevant only when resources are
deemed to be scarce.
SESSLEN is the limit in minutes of the session, i.e. the
maximum duration of the process in elapsed minutes.
A value of zero implies no limit. Relevant only for
interactive sessions.
PRIORITY For a batch job, the priority as specified by the
user:
1 = very low
2 = low
3 = standard
4 = high
5 = very high
DECKS The number of tape decks to be available to this
(batch) job.
DRIVES The number of disc drives to be available to this
(batch) job.
PARTCLOSE Set -1 at process startup if a partial close is in
force otherwise zero.
TMODES Describes the terminal characteristics. This record
is zero until a DGETMODE has been issued.
Subsequently it contains data from the TCP.
UEND marks the end of the record.