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.