C C CADNET V2.0 C C XMT -- MAIN PROGRAM OF THE TRANSMITION SECTION. THIS PROGRAM C WILL TRANSMIT FIXED RECORD LENGTH FILES, AND STANDARD LIST FILES C FROM ONE PDP 11 TO ANOTHER. IT USES ANY TERMINAL IN THE DEVICE C TABLE WHICH IT CAN ATTACH TO, AND IS CONNECTED TO THE REMOTE C PDP-11 RUNNING 'RECEIV', CADNET V2.0 . C LOGICAL*1 LINE(516),REMOTE(28),INFILE(28),TSKNAM(6),RESPON(132) LOGICAL*1 OSWT(10),ISWT(10),CHAR,EOT,SOH,ZER,NIN,COLON LOGICAL IMAGE INTEGER IARRAY(18) PARAMETER SY=2, REM=3, ERR=4, EFN=1 COMMON /TASK/ TSKNAM COMMON /BUFFER/ ICOUNT, RESPON DATA IDOT / 3R... / DATA EOT, ZER, NIN, COLON, SOH/"4, '0', '9', ':', "1/ DATA IMAGE /0/ C C RETRIEVE THE NAME OF THE PROGRAM AND PLACE IT IN THE COMMON BLOCK C TASK FOR USE IN ERROR MESSAGES. CALL GETTSK(IARRAY,IDS) !GET TASK NAME IN RADIX 50 IF(IARRAY(1).EQ.IDOT) IARRAY(1)=0 !ELIMINATE LEADING '...' IF(IARRAY(2).EQ.IDOT) IARRAY(2)=0 !TRAILING '...' CALL R50ASC(6,IARRAY,TSKNAM) !CONVERT TO ASCII DO 10 I=1,6 !ELIMINATE BLANKS IF(TSKNAM(I).EQ."40) TSKNAM(I)=0 !FIND FIRST PRINTING CHAR 10 CONTINUE C CALL ASSIGN (1,'TI:') !MCR COMMAND LINE LUN CALL ASSIGN (ERR,'TI:') !ERROR MESSAGE LUN C 20 CONTINUE IMAGE=.FALSE. !ASSUME A VARIBLE RECORD LENGTH FILE NSIZE=0 CALL GETLIN(LINE,LEN,IDS,'XMT') !RETRIEVE COMMAND LINE CALL INTERP (LINE,LEN,REMOTE,INFILE,ISIZE) !INTERPERET IT CALL TTATT (REMOTE,IDS) !ATTACH TO TERMINAL IF (IDS.LT.0) GOTO 1050 !EXIT IF FAILURE IF(ISIZE.LE.0) GOTO 40 !CHECK FOR /IM SWITCH C C FIXED LENGTH FILE SECTION IMAGE=.TRUE. IF(ISIZE.GT.512) GOTO 1030 C 40 CONTINUE C CALL OPE (LENIN, IN, IDS) !OPEN THE TRANSMIT FILE IF (IDS.LT.0) GOTO 1010 !CHECK FOR OPEN ERROR C C INITIALIZE COMMUNICATION WITH REMOTE. CALL INIT (OUT,ISIZE,IDS) !INITIALIZE COMMUNICATON IF(IDS.LT.0) GOTO 1020 C C SEND FILE A LINE AT A TIME 50 CALL READF(LINE,LINLEN,IDS) !READ A LINE OF THE FILE IF (IDS) 1000, 60, 70 !ERROR, NORMAL, EOF 60 CONTINUE CALL TRANS(LINE,LINLEN,IDS) IF(IDS.LT.0) GOTO 20 GOTO 50 !GET ANOTHER LINE OF THE FILE C C TERMINATE COMMUNICATION, AND RETURN FOR AN ANOTHER COMMAND LINE C READF CLOSED THE INPUT FILE 70 CONTINUE WRITE (REM,2050) EOT CALL TIME IF ((ICOUNT.NE.2).OR.(RESPON(2).NE.EOT)) GOTO 1040 ICOUNT=0 GOTO 20 C C BAD FILE 1000 CONTINUE WRITE(REM,2050) SOH !ABORT COMMUNICATION 1010 WRITE(ERR,2000) TSKNAM CALL CLOSE(SY) GOTO 20 1020 WRITE(ERR,2030) TSKNAM WRITE(REM,2050) SOH !ABORT COMMUNICATION CALL CLOSE(SY) GOTO 20 C C RECORD SIZE TO LARGE 1030 WRITE(ERR,2040) TSKNAM GOTO 20 C COMMUNICATION TERMINATED ABRUPTLY 1040 WRITE(ERR,2020) TSKNAM GOTO 20 C C DEVICE ALREADY ATTACHED 1050 WRITE(ERR,2060) TSKNAM CALL EXIT 2000 FORMAT(X,6A1,' -- OPEN OR READ FAILURE ON INPUT FILE') 2010 FORMAT(Q,132A1) 2020 FORMAT(X,6A1,' -- COMMUNICATION DID NOT END PROPERLY, FILE ', & 'MAY BE CORRUPTED') 2030 FORMAT(X,6A1,' -- COMMUNICATION INITIALIZATION ERROR') 2040 FORMAT(X,6A1,' -- RECORD SIZE TOO LARGE') 2050 FORMAT(X,10A1) 2060 FORMAT(X,6A1,' -- COMMUNICATION DEVICE ATTACHED') END