@X @~
~V7 56 2 -5
~D10
~H                    MUSS
~
~
~D10
~H             SYS231
~D10
~MMANCHESTER UNIVERSITY  -  CONFIDENTIAL
~
~
                                                            ISSUE 11~
~V9 -1
~P
~V9 1
~YSYS231
~Y
~V9 -1
~P
~D15
~HFLOWCHARTS
~
~
~H                SYS231
~V9 -1
~F
@TITLE SYS23(1,9)

@COL 1S-2R-3R-4R-5R-6F

@FLOW 1-2-3-4-5-6

@BOX 1.0
SYSTEM OPERATOR FACILITIES
@BOX 4.0
PROCEDURES IN MODULE:
   INT1 NOTE OPERATOR PARAMETER
   CMD1 SET OPERATOR PARAMETER
   CMD3 READ OPERATOR PARAMETER
@BOX 6.0
END
@BOX 1.1
#SYS23/1
MODULE SYS23 (NOTE.OP.PARAM, SET.OP.PARAM, READ.OP.PARAM);
@BOX 3.1
*GLOBAL 5;
INTEGER [NO.OF.OP.PARAMS] PARAM.ID;
ADDR INTEGER [NO.OF.OP.PARAMS] PARAM.PTR;
@BOX 4.1
*CODE 2;
PSPEC NOTE.OP.PARAM (INTEGER, ADDR INTEGER);
   #SYSINT23.1
*CODE 19;
LSPEC SET.OP.PARAM (INTEGER, INTEGER);
LSPEC READ.OP.PARAM (INTEGER);
   #SYSCMD23.1
   #SYSCMD23.2
@BOX 6.1
*END
@END
@TITLE SYS23/1(1,9)

@COL 1S-2R-3R-4R

@FLOW 1-2-3-4

@BOX 1.0
OTHER MODULES REFERENCED
@BOX 4.0
SYS13 PROCESS MANAGEMENT
@BOX 1.1
::EXTERNAL ENVIRONMENT
@BOX 2.1
IMPORT LITERAL NO.OF.OP.PARAMS;
@BOX 4.1
PSPEC SYS13.CHECK.PRIV ();
ADDR PW0, PW1;
@END
@TITLE SYSINT23.1(1,9)

@COL 1S-2R-3F

@FLOW 1-2-3

@BOX 1.0
NOTE OPERATOR PAAMETERS (PARAMETER ID, PARAMETER POINTER)
@BOX 2.0
INSERT DATA IN TABLES
@BOX 3.0
END
@BOX 1.1
PROC NOTE.OP.PARAM (PRM.ID, PRM.PTR);
INTEGER I;
@BOX 2.1
-1 => I;
WHILE 1 +> I < NO.OF.OP.PARAMS AND
   PARAM.ID [I] /= 0 DO OD
IF I < NO.OF.OP.PARAMS THEN
   PRM.ID => PARAM.ID [I];
   PRM.PTR => PARAM.PTR [I];
FI
@BOX 3.1
END
@END
@TITLE SYSCMD23.1(1,9)

@COL 1S-2T-3T-4R-5F
@COL 6R

@ROW 6-4

@FLOW 1-2PRIVILEGED-3OK-4-5
@FLOW 2YES-5
@FLOW 3-6-5

@BOX 1.0
SET OPERATOR PARAMETER (PARAMETER ID, PARAMETER VALUE)
@BOX 2.0
CALLING PROCESS UNPRIVILEGED?
@BOX 3.0
FIND PARAMETER
@BOX 4.0
SET VALUE
@BOX 5.0
END
@BOX 6.0
RETURN FAULT STATUS -90
(UNKNOWN OPERATOR PARAMETER)
@BOX 1.1
PROC SET.OP.PARAM (PRM.ID, PRM.VAL);
INTEGER PARAM.NO;
@BOX 2.1
SYS13.CHECK.PRIV ();
IF PW0 /= 0
@BOX 3.1
-1 => PARAM.NO;
WHILE 1 +> PARAM.NO < NO.OF.OP.PARAMS AND
   PRM.ID /= PARAM.ID [PARAM.NO] DO OD
IF PARAM.NO = NO.OF.OP.PARAMS OR PRM.ID = 0
@BOX 4.1
PRM.VAL => PARAM.PTR [PARAM.NO]^;
@BOX 5.1
END
@BOX 6.1
-90 => PW0;
@END
@TITLE SYSCMD23.2(1,9)

@COL 1S-2T-3T-4R-5F
@COL 6R

@ROW 6-4

@FLOW 1-2PRIVILEGED-3OK-4-5
@FLOW 2YES-5
@FLOW 3-6-5

@BOX 1.0
READ OPERATOR PARAMETER (PARAMETER ID)
@BOX 2.0
CALLING PROCESS UNPRIVILEGED?
@BOX 3.0
FIND PARAMETER
@BOX 4.0
RETURN VALUE
@BOX 5.0
END
@BOX 6.0
RETURN FAULT STATUS -90
(UNKNOWN OPERATOR PARAMETER)
@BOX 1.1
PROC READ.OP.PARAM (PRM.ID);
INTEGER PARAM.NO;
@BOX 2.1
SYS13.CHECK.PRIV ();
IF PW0 /= 0
@BOX 3.1
-1 => PARAM.NO;
WHILE 1 +> PARAM.NO < NO.OF.OP.PARAMS AND
   PRM.ID /= PARAM.ID [PARAM.NO] DO OD
IF PARAM.NO = NO.OF.OP.PARAMS OR PRM.ID = 0
@BOX 4.1
PARAM.PTR [PARAM.NO]^ => PW1;
@BOX 5.1
END
@BOX 6.1
-90 => PW0;
@END
