$DEBUG PAGELENGTH(50) /*********************/ /* */ /* E X E C U T E 2 */ /* */ /*********************/ M$EXECUTE2: DO; $NOLIST $INCLUDE(COMMON.DCL) $INCLUDE(ISIS.DCL) $INCLUDE(STRING.DCL) $INCLUDE(:F1:ISISIO.DCL) $LIST DECLARE MY$NAME STRING EXTERNAL; /****************************************************/ /* */ /* PROCEDURE NAME - EXECUTE2 */ /* */ /* FUNCTION - EXECUTE A PROGRAM, BY PREPARING A */ /* SUBMIT FILE WHICH CONTAINES A */ /* COMMAND FOR EXECUTION AND A COMMAND */ /* FOR TRANSFERRING CONTROL BACK TO */ /* ORIGINAL CONSOLE DEVICE. */ /* */ /* INPUT - COM$LINE$P : ADDRESS, A POINTER TO A */ /* STRING CONTAINING THE */ /* COMMAND LINE. */ /* */ /* OUTPUT - NONE. */ /* */ /* LAST UPDATED - 23.5.82 DROR */ /* */ /****************************************************/ DECLARE MSG$NOT$EXISTS(1) BYTE EXTERNAL; EXECUTE2: PROCEDURE(COM$LINE$P) PUBLIC; DECLARE COM$LINE$P ADDRESS; DECLARE (COM$LINE BASED COM$LINE$P) STRING; DECLARE AFTN ADDRESS, STAT ADDRESS, ACTUAL ADDRESS, ENTRY ADDRESS; DECLARE I ADDRESS; DECLARE CI$NAME STRUCTURE( ML ADDRESS, L ADDRESS, D(15) BYTE ), CO$NAME STRUCTURE( ML ADDRESS, L ADDRESS, D(15) BYTE ); DECLARE COMP1 STRUCTURE( ML ADDRESS, L ADDRESS, D(8) BYTE ) DATA(7,7,'CONSOL ',0), COMP2 STRUCTURE( ML ADDRESS, L ADDRESS, D(3) BYTE ) DATA(2,2,CR,LF,0); CALL MSG$OUT(.('-',0)); CALL WHOCON(CI$AFT,.CI$NAME.D); CI$NAME.ML=14; CI$NAME.L=0; DO WHILE( ( CI$NAME.D(CI$NAME.L) <> ' ' ) AND ( CI$NAME.L < CI$NAME.ML ) ); CI$NAME.L=CI$NAME.L+1; END; CALL WHOCON(CO$AFT,.CO$NAME.D); CO$NAME.ML=14; CO$NAME.L=0; DO WHILE( ( CO$NAME.D(CO$NAME.L) <> ' ' ) AND ( CO$NAME.L < CO$NAME.ML ) ); CO$NAME.L=CO$NAME.L+1; END; IF MY$NAME.D(0)=':' THEN DO; I=COM$LINE.L+4; CALL APPEND$S(.COM$LINE,.MY$NAME); COM$LINE.L=I; END; CALL APPEND$S(.COM$LINE,.COMP1); CALL APPEND$S(.COM$LINE,.CI$NAME); CALL APPEND$S(.COM$LINE,.COMP2); I=0; DO WHILE ( ( COM$LINE.D(I) <> ' ' ) AND ( I < COM$LINE.L ) ); I=I+1; END; CALL OPEN(.AFTN,.(':F1:MENU.CON '),WRITE$AC,0,.STAT); CALL CHECK$STATUS(STAT); CALL WRITE(AFTN,.COM$LINE.D,COM$LINE.L,.STAT); CALL CHECK$STATUS(STAT); CALL CLOSE(AFTN,.STAT); CALL CHECK$STATUS(STAT); CALL CONSOL(.(':F1:MENU.CON '),.CO$NAME.D,.STAT); CALL CHECK$STATUS(STAT); CALL READ(CI$AFT,.COM$LINE.D,I,.ACTUAL,.STAT); CALL CHECK$STATUS(STAT); CALL LOAD(.COM$LINE.D,0,1,.ENTRY,.STAT); CALL ERROR$MSG(STAT); IF STAT=13 THEN CALL MSG$OUT(.MSG$NOT$EXISTS); CALL CONSOL(.CI$NAME.D,.CO$NAME.D,.STAT); CALL CHECK$STATUS(STAT); CALL EXIT; END EXECUTE2; END M$EXECUTE2;