'CORAL' L7I 'LIBRARY' ( 'COMMENT' BASIC COMPATABLE PROCEDURES; 'INTEGER''PROCEDURE' QIO ('VALUE''INTEGER','VALUE''INTEGER','VALUE''INTEGER', 'VALUE''INTEGER','INTEGER''ARRAY','INTEGER''ARRAY'); 'INTEGER''PROCEDURE' VDUFLG ('VALUE''INTEGER'); 'INTEGER''PROCEDURE' VDULUN ('VALUE''INTEGER'); 'INTEGER''PROCEDURE' WAITEF ('VALUE''INTEGER')); 'COMMON' ('INTEGER''PROCEDURE' INKEYS); 'SEGMENT' RJSSUB 'BEGIN' 'COMMENT' GET THE CONTROL DEFINITIONS; 'INCLUDE' "[200,25]GENDEF.COR" 'INTEGER''PROCEDURE' INKEYS; 'BEGIN' 'COMMENT' THIS PROCEDURE ALLOWS THE USER TO READ A CHARACTER, IN STRING FORMAT FROM THE USERS TERMINAL WITHOUT ECHO OPTION. IF NO CHARACTERS HAVE BEEN ENTERED ON THE TERMINAL THEN THIS PROCEDURE WILL EXIT WITH A BLANK STRING (LENGTH = 0) NOTE NO CASE CONVERTION WILL TAKE PLACE; 'INTEGER''ARRAY' PRL [0:5]; (PARAMETER ARRAY LIST) 'INTEGER''ARRAY' ISB [0:1]; (INPUT OUTPUT STATUS BUFFER AREA) 'INTEGER' STORE , LUN; (GENERAL STORAGE REGISTERS) 'COMMENT' THE NEXT ARRAY IS PRESET TO FIX IT IN MEMORY; 'BYTE''ARRAY' STRING [0:5] := 1,0,0,0,0,0; (STORE AREA OF INPUT CHARACTERS) 'COMMENT' START OF PROGRAMME; VDUFLG (SWITCH ON); (ASSIGN A LUN TO THE VDU) LUN := VDULUN (GIVE VALUE); (FIND OUT WHICH LUN IS BEING USED FOR THE TERMINAL) 'IF' LUN <> VOID LUN 'THEN' 'BEGIN' 'COMMENT' VALID LUN BEING USED SO ON WE GO; ISB [0] := ERROR; (ASSUME ERROR IN ERROR CODE WORD) PRL [0] := 'LOCATION' (STORE); (ADDRESS WHERE DATA IS TO BE STORED) PRL [1] := 1; (MAXIMUM NUMBER OF CHARACTERS TO BE READ) PRL [2] := 0; (TIME OUT IMMEDIATLY IF NO CHARACTERS INPUT) 'COMMENT' (READ+NO-ECHO+TIMEOUT+PASS-ALL FUNCTION) AND EVENT FLAG ONE; 'IF' QIO (664,LUN,1,0,ISB,PRL) = SUCCESS 'THEN' WAITEF (1); (WAIT FOR QIO TO COMPLETE) 'IF' ISB [0] = SUCCESS 'THEN' 'BEGIN' STRING [2] := 1; (ONE CHARACTER READ) STRING [4] := STORE; (LOAD INTO STRING THE RECIEVED CHARACTER) 'END' 'ELSE' STRING [2] := 0; (A NULL STRING LOADED) 'END'; 'ANSWER' 'LOCATION' (STRING [2]); (THE ADDRESS OF STRING START) 'END' OF PROCEDURE INKEYS; 'END'; 'FINISH'