|
|
DataMuseum.dkPresents historical artifacts from the history of: Bogika Butler |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Bogika Butler Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 6400 (0x1900)
Types: TextFile
Names: »EXCLUDE.SA«
└─⟦909f4eb2b⟧ Bits:30009789/_.ft.Ibm2.50006622.imd Mogens Pelles Zilog 80,000 / EOS projekt
└─⟦this⟧ »EXCLUDE.SA«
└─⟦e12db5ad4⟧ Bits:30009789/_.ft.Ibm2.50007357.imd Mogens Pelles Zilog 80,000 / EOS projekt
└─⟦this⟧ »EXCLUDE.SA«
æ*****************************************************************
Copyright 1984 by
NCR Corporation
Dayton, Ohio U.S.A.
All Rights Reserved
******************************************************************
EOS Software produced by:
NCR Systems Engineering - Copenhagen
Copenhagen
DENMARK
*****************************************************************å
OBJECT PROGRAM Exclude;
æ$H=0 no heap spaceå
CONST
ProcId = 'Exclude vers 1.00 83-12-01 ';
æ
E O S - E X C L U D E
Changes:
vers. 1.00 83-12-01, EAR initial version
83-12-02, EAR num.parameters allowed
This EOS program calls the Exclude entry of an io system
Program Call:
exclude <ioSysName> <deviceName> Æ<text params>...Å Æ#<num params>...Å
å
CONST
ResultId = 'EXCLUDE: sNo OrgSy Au Ar OrgNo Fa Ma';
OrgSys = 7012;
æ$Eå
æ$L-å
æ$F=FAMILY.UNIV.IDå
æ$F=FAMILY.KNEL.IDå
æ$F=FAMILY.ALLOC.IDå
æ$F=FAMILY.SCHED.IDå
æ$F=FAMILY.OBJDIR.IDå
æ$F=FAMILY.IOSYS.IDå
æ$F=FAMILY.APPLI.IDå
æ$F=PASINCLU.CHKPROCS.SAå
æ$F=PASINCLU.TERMTOOL.SAå
æ$L+å
æ***** Local pointers *****å
TYPE
apLocals = RECORD
code : ^^;
pobjDir : ^^ObjDir;
stdIn : faoRefType;
stdOut : faoRefType;
stdError : faoRefType;
END; æapLocalså
æ$Eå
PROGRAM iExclude OBJECT Application WITH apLocals;
ENTRY Run æfileEnv, jobSys ; progId Æ, options...Åå
WITH RECORD
t : ^^;
ioSys : iosysRefType;
END;
æ$Eå
CONST
æprivate error causeså
privFam = -1;
noIoSysParam = 1;
noDevName = 2;
paramSequence = 3;
numPSyntax = 4;
VAR
i, numCount, paramNo, used : integer;
line : array Æ1..90Å of char;
devName, ioSysName, param : fullId;
res : resultType;
æ$Eå
PROCEDURE printLine (line : shortId;
txt : shortId);
BEGIN
clearText (line);
putText (line, txt);
putNl (line);
xCheck ( termIo (stdOut, WriteSeq, line));
END; æprintLineå
FUNCTION numParam : boolean;
VAR
stop : boolean;
BEGIN
æ*b* printVar ('numParam: paramNo = ', paramNo); *e*å
IF numCount = 1 THEN stop := false æfirst num param read previouslyå
ELSE
IF numCount = -1 THEN stop := true æparam list exhausted previouslyå
ELSE
IF nextValArg (param) THEN
BEGIN
stop := elements(param) = 0;
paramNo := paramNo + 1;
END
ELSE
stop := true;
æ*b* printVar ('param = ', param);
printVar ('numCount = ', numCount);
if stop then printText ('stop '); *e*å
IF stop THEN æparam list exhaustedå
BEGIN
IF numCount = 0 THEN æstop text param loopå
BEGIN
numCount := -1; numParam := true;
END
ELSE
numParam := false;
END æstopå
ELSE
BEGIN
IF paramÆ1Å = '#' THEN
BEGIN
numCount := numCount + 1; numParam := true;
END
ELSE
BEGIN ætext paramå
IF numCount > 0 THEN
exception (makeRes (paramSequence, privFam, paramNo, 0));
ætext params not allowed after first num paramå
numParam := false;
END; ætextå
END; ænot stopå
æ*b* printVar ('end numParam, numCount= ', numCount);
printVar ('paramNo = ', paramNo); *e*å
END; ænumParamå
FUNCTION numVal (param : fullId) : integer;
VAR
i, k, num : integer;
BEGIN
num := 0;
FOR i := 2 TO elements(param) DO
BEGIN
k := ord (paramÆiÅ) - ord ('0');
IF (k < 0) OR (k > 9) THEN
exception (makeRes (numPSyntax, privFam, paramNo, 0));
num := num * 10 + k;
END; æfor iå
numVal := num;
æ*b* pss ('numVal = ', num); *e*å
END; ænumValå
æ$Eå
BEGIN
æ*b* PS ('Start of EXCLUDE '); *e*å
IN
res := OkResult;
xCheck ( Copy (fileEnv^^Æ1Å, stdIn));
xCheck ( Copy (fileEnv^^Æ2Å, stdOut));
xCheck ( Copy (fileEnv^^Æ3Å, stdError));
æ Wellcome message on terminalå
printLine (line, procId);
numCount := 0;
paramNo := 2;
IF NOT nextValArg (ioSysName) THEN
exception (makeRes (noIoSysParam, privFam, 0, 0));
IF NOT nextValArg (devName) THEN
exception (makeRes (noDevName, privFam, 0, 0));
æ*b* printVar ('ioSysName = ', ioSysName);
printVar ('devName = ', devName); *e*å
xCheck ( pObjDir.GetRef (OUT ioSys ; IN ioSysName, OUT used, OUT i));
xCheck ( ioSys.Exclude ( ; devName,
WHILE not numParam DO (IN OUT param),
WHILE numParam DO (IN numVal(param))));
DO
BEGIN
res := GetException;
æ*b* ps ('exclude error '); pr (res); *e*å
IF res.family = privFam THEN
BEGIN
clearText (line);
putText (line, '***');
CASE res.main OF
noIoSysParam:
putText (line, 'missing ioSysName');
noDevName:
putText (line, 'missing deviceName');
paramSequence:
BEGIN
putText (line, 'text param after num param');
putInt (line, paramNo, 4);
END;
numPSyntax:
BEGIN
putText (line, 'syntax error in num param');
putInt (line, paramNo, 4);
END;
otherwise
BEGIN
putText (line, 'unknown error');
putInt (line, res.main, 4);
END;
END; æcaseå
putNl (line);
res.main := ok;
END æfamily = privFam, own error codeså
ELSE
putError (line, res, '', 0);
res := call( termIo (stdError, writeSeq, line));
æ*b* printVar ('error msg line = ', line); *e*å
ObjReturn (res);
END;
END; æentry Runå
OTHERWISE unknown
with record t : ^^; end;
BEGIN
exception (makeRes (-EntryIllegal, Universal, 0, 0));
END;
END; æprogram eosloadå
INITIALIZE
iExclude 'exclude' :
pObjDir 'objdir'
END. æ exclude å
«eof»