'CORAL' L7L 'COMMON'('INTEGER''PROCEDURE' LUNTEST('VALUE''INTEGER'); 'INTEGER''PROCEDURE' LUNFREE ('VALUE''INTEGER'); 'INTEGER''PROCEDURE' LUNBOOK('VALUE''INTEGER')); 'SEGMENT' RJSSUB 'BEGIN' 'COMMENT' GENERAL MACRO DEFINITIONS; 'INCLUDE' "[200,25]GENDEF.COR" 'COMMENT' SET ALL LUNS DEALOCATED FREE NOTE THE UNIT ZERO SHOULD NEVER BE USED; 'BYTE''ARRAY' LUNS [0:17]:= 0, FREE,FREE,FREE,FREE,FREE, FREE,FREE,FREE,FREE,FREE, FREE,FREE,FREE,FREE,FREE, FREE; (16 LUN UNITS FREE) 'INTEGER''PROCEDURE' LUNTEST ('VALUE''INTEGER' VALUE); 'BEGIN' 'COMMENT' THIS PROCEDURE WILL INDICATE IF A LUN HAS BEEN ALLOCATED IF A LUN NUMBER IS OUT OF RANGE THE VOID LUN REPLY IS MADE OTHERWISE THE REPLY WILL BE (ALLOCATED OR FREE); 'IF' VALUE <=0 'OR' VALUE >16 'THEN' 'ANSWER' VOID LUN; (LUN OUT OF RANGE REPLY) 'ANSWER' LUNS[VALUE]; (ANSWER WITH STATUS OF LUN) 'END' OF PROCEDURE LUNTEST; 'INTEGER''PROCEDURE' LUNBOOK ('VALUE''INTEGER' VALUE); 'BEGIN' 'COMMENT' THIS PROCEDURE ATTEMPTS TO MARK A LUN AS ALOCATED IF THE UNIT IS FREE AND THE THE LUN NUMBER IS IN RANGE; 'IF' VALUE <=0 'OR' VALUE >16 'THEN' 'ANSWER' VOID LUN; (LUN OUT OF RANGE REPLY) 'IF' LUNS[VALUE]=ALLOCATED 'THEN' 'ANSWER' ERROR; (ATTEMPT TO DOUBLE ALLOCATE A LUN) LUNS[VALUE] := ALLOCATED; (MARK LUN ALLOCATED) 'ANSWER' SUCCESS; (LUN ALLOCATED OK) 'END' OF PROCEDURE LUNBOOK; 'INTEGER''PROCEDURE' LUNFREE ('VALUE''INTEGER' VALUE); 'BEGIN' 'COMMENT' THIS PROCEDURE WILL ATTEMPT TO MARK A LUN AS FREE IF THE LUN NUMBER IS IN VALID RANGE; 'IF' VALUE <=0 'OR' VALUE >16 'THEN' 'ANSWER' VOID LUN; (LUN OUT OF RANGE REPLY) 'COMMENT' THERE IS NO POINT CHECKING IF UNIT ALREADY FREE AS NOTHING IS ASSIGNED ; LUNS[VALUE] := FREE; (MARK LUN AS FREE) 'ANSWER' SUCCESS; (INDICATE JOB DONE) 'END' OF PROCEDURE LUNFREE; 'END'; 'FINISH'