%EXTERNALROUTINE WHO(%STRING (255) S) %integer l %externalstring (255) %fnspec fromstring(%string (255) s, %integer i,j) %EXTERNALINTEGER UINFSEG = 9; %INTEGER UINFAD UINFAD=UINFSEG<<18 %RECORDFORMAT %C UINFF (%STRING(6) USER, %STRING(31) JOBDOCFILE, %C %INTEGER MARK, FSYS, PROCNO, ISUFF, REASON, BATCHID, SESSICLIM, %C SCIDENSAD, SCIDENS, STARTCNSL, AIOSTAT, SCT DATE, %C SYNC1 DEST, SYNC2 DEST, ASYNC DEST, AACCT REC, AIC REVS, %C %STRING(15)JOBNAME, %STRING(31)BASEFILE, %INTEGER PREVIC, %C %INTEGER ITADDR0, ITADDR1, ITADDR2, ITADDR3, ITADDR4, %C STREAM ID, DIDENT, SCARCITY, PREEMPTAT, %STRING(11)SPOOLRFILE, %C %INTEGER FUNDS, SESSLEN, PRIORITY, DECKS, DRIVES, UEND) %RECORD (uinff) %name UINF UINF==RECORD(UINFAD) %INTEGER NODE, TERM, BUFF NODE = (UINF_ITADDR0>>16)&X'FF' TERM = (UINF_ITADDR0>>8)&X'FF' BUFF = UINF_ITADDR0&X'FF' PRINTSTRING("you are on Node"); WRITE(NODE, 1) PRINTSTRING(" Terminal"); WRITE(TERM, 1) PRINTSTRING(" Buffer"); WRITE(BUFF, 1) %if uinf_itaddr0&x'ff' # 3 %start spaces(2); l = uinf_itaddr0&x'ff' s = string(addr(uinf_itaddr0)) s = fromstring(s, 3, length(s)) %finish NEWLINE %END %ENDOFFILE