$DEBUG PAGELENGTH(55) /*******************/ /* */ /* E X $ C O P Y */ /* */ /*******************/ M$EX$COPY: DO; $NOLIST $INCLUDE(COMMON.DCL) $INCLUDE(ISIS.DCL) $INCLUDE(:F1:ISISIO.DCL) $LIST GET$FNAME: PROCEDURE(NAME$P,TYPE,WILDCARD,NULLNAME,EXTPNT) EXTERNAL; DECLARE NAME$P ADDRESS, TYPE BYTE, WILDCARD BOOLEAN, NULLNAME BOOLEAN, EXTPNT BOOLEAN; END GET$FNAME; SWITCH: PROCEDURE(YESNO$P,MSG$P) EXTERNAL; DECLARE (YESNO$P,MSG$P) ADDRESS; END; DECLARE MSG$FILL$IN(1) BYTE EXTERNAL; DECLARE MSG$OPTIONS(1) BYTE EXTERNAL; $INCLUDE(STRING.DCL) EX$COPY: PROCEDURE (COM$LINE$P,COM$TYPE$P) PUBLIC; DECLARE COM$LINE$P ADDRESS, COM$TYPE$P ADDRESS; DECLARE (COM$LINE BASED COM$LINE$P) STRING, (COM$TYPE BASED COM$TYPE$P) BYTE; DECLARE NAME STRUCTURE( ML ADDRESS, L ADDRESS, D(15) BYTE ); DECLARE SWITCHES(7) STRUCTURE( ML ADDRESS, L ADDRESS, D(3) BYTE ) DATA ( 2,2,' Q',0, 2,2,' B',0, 2,2,' P',0, 2,2,' C',0, 2,2,' S',0, 2,2,' N',0, 2,2,' U',0 ); DECLARE YESNO STRUCTURE( L BYTE, D(7) BYTE ); DECLARE COMP1 STRUCTURE( ML ADDRESS, L ADDRESS, D(6) BYTE ) DATA (5,5,'COPY ',0); DECLARE COMP2 STRUCTURE( ML ADDRESS, L ADDRESS, D(5) BYTE ) DATA (4,4,' TO ',0); DECLARE COMP3 STRUCTURE( ML ADDRESS, L ADDRESS, D(3) BYTE ) DATA (2,2,CR,LF,0); DECLARE CONSOL$LINE$I ADDRESS; DECLARE I BYTE; DECLARE MSG1(*) BYTE DATA( LF, ' --- COPY FILES ---',CR,LF, ' FROM TO',CR,LF, '.............. ..............',CR, 0); DECLARE MSG2(*) BYTE DATA( C$RGT,C$RGT,C$RGT,C$RGT, C$RGT,C$RGT,C$RGT,C$RGT, C$RGT,C$RGT,C$RGT,C$RGT, C$RGT,C$RGT,C$RGT,C$RGT, C$RGT,C$RGT, 0); DECLARE MSG4(*) BYTE DATA( 'Query ( ask for o.k. ) before each copy',CR,LF, 'Delete the file before copying to it',CR,LF, 'Pause to change disks before copying',CR,LF, 'Copy files with their attributes also',CR,LF, 'Copy system files only',CR,LF, 'Copy non-system files only',CR,LF, 'Update ( do NOT re-write ) the file',CR,LF, 0); YESNO.L=7; DO I=0 TO 6; YESNO.D(I)=0; END; CALL MSG$OUT(.MSG$FILL$IN); CALL MSG$OUT(.MSG1); COM$LINE.L=0; CALL APPEND$S(.COM$LINE,.COMP1); CALL GET$FNAME(.NAME,2,TRUE,FALSE,FALSE); CALL APPEND$S(.COM$LINE,.NAME); CALL APPEND$S(.COM$LINE,.COMP2); CALL MSG$OUT(.MSG2); CALL GET$FNAME(.NAME,3,TRUE,FALSE,FALSE); CALL APPEND$S(.COM$LINE,.NAME); CALL MSG$OUT(.MSG$OPTIONS); IF UPPER(CI)='Y' THEN DO; CALL MSG$OUT(.(CLR$LIN,CR,0)); CALL SWITCH(.YESNO,.MSG4); END; DO I=0 TO YESNO.L-1; IF YESNO.D(I)=1 THEN CALL APPEND$S(.COM$LINE,.SWITCHES(I)); END; CALL APPEND$S(.COM$LINE,.COMP3); CALL MSG$OUT(.(CLR$SCRN,0)); COM$TYPE=1; END EX$COPY; END M$EX$COPY;