PROGRAM LOGTSK C+ C LOGTSK IS A SIMPLE FORTRAN PROGRAM TO RECEIVE DATA SENT FROM SYSLOG C AND TO STORE IN IN A FILE LB:[1,4]SYSLOG.DAT. IT IS WRITTEN IN F4P TO C SIMPLIFY LIFE. SUBSTANTIAL CORE AND SAVINGS COULD RESULT BY WRITING C THIS IN MACRO. THIS WOULD BE IMPORTANT ONLY IF A LOT OF RAPID SAMPLING C WAS DONE AND LOGTSK HAD TO BE IN CORE MOST OF THE TIME. C LOG... INITIALLY ASSUMES THAT IT WILL BE ASKED TO STOP AFTER C RECIEVING DATA(IE IT WILL HANG OUT IN CORE). IF IN THE STARTUP C PACKET, OR CHANGE DELTA (SAMPLING INTERVAL PACKET) SENT FROM SYSLOG C THE DELTA VALUE IS LESS THAN OR EQUAL TO 5 MINUTES, SYSLOG WILL NOT EXIT C AFTER RECEIVING DATA. RATHER IT WILL STOP ITSELF AND WAIT FOR THE NEXT C PACKET. THIS SAVES THE OVERHEAD IN N OPENING AND CLOSING FILES. NORMALLY, C HOWEVER, LOG... WILL OPEN A FILE, WRITE DATA TO IT, CLOSE IT, AND THEN DO C A RECIEVE DATA OR EXIT. C- INTEGER*2 ISNDBF(15) INTEGER*2 ISTORE(13) LOGICAL*1 LTSKNM(6) EQUIVALENCE (TSKNAM,ISNDBF(1)) EQUIVALENCE (ITSK1,ISNDBF(1)) EQUIVALENCE (ITSK2,ISNDBF(2)) EQUIVALENCE (ISTORE(1),ISNDBF(3)) DATA SYSLOG /6RSYSLOG/ DATA TSKLOG /6RTSKLOG/ DATA IBYE /3RBYE/ DATA IHEL /3RHEL/ DATA IUPD /3RUPD/ DATA TTP1 /4RTTP1/ ! NAME OF SPOOLER TASK TO TT1: DATA RLPP0 /4RLPP0/ ! SPOOLER TO LP0: DATA RLPP1 /4RLPP1/ ! SPOOLER TO LP1: C .... NO ERROR MESSAGES ARE TO BE DISPLAYED FOR ERRORS WHICH COULD BE TRAPPED C .... BY THE OPEN AND WRITE ERR= TRANSFER. CALL ERRSET(29,.TRUE.,.FALSE.,.TRUE.,.FALSE.,) ! NO SUCH FILE CALL ERRSET(30,.TRUE.,.FALSE.,.TRUE.,.FALSE.,) ! OPEN FAILURE IOPEN=0 ! SHOW LOG FILE NOT OPEN YET IDLTA=30 ! ASSUME 30 MIN SAMPLING INTERVALS ISTOP=1 ! ASSUME WE WILL STOP 100 CONTINUE IF(ISTOP.EQ.1) CALL RCST(,ISNDBF,IDSW) ! RECIEVE DATA OR STOP IF(ISTOP.EQ.0) CALL RECOEX(,ISNDBF,,IDSW) ! RECEIVE DATA OR EXIT IF(IOPEN.EQ.1) GOTO 140 ! DON'T BOTHER TRYING TO OPEN FILE OPEN(UNIT =1, ! OPEN LOGFILE FOR APPEND - NAME ='LB:[1,4]SYSLOG.DAT;1',! ON LB:[1,4]SYSLOG.DAT;1 - ACCESS ='APPEND', ! AS A SEQUENTIAL - FORM ='UNFORMATTED', ! UNFORMATTED FILE. - ERR =120, ! - EXTENDSIZE =1, ! EXTEND ONE BLOCK AT A TIME - TYPE ='OLD') ! AS AN OLD FILE. GOTO 140 ! IF NO ERRORS SKIP OVER 120 OPEN(UNIT =1, ! IF WE HAVE TO CREATE THE FILE - NAME ='LB:[1,4]SYSLOG.DAT;1',! ON LB:[1,4]SYSLOG.DAT;1 - ACCESS ='SEQUENTIAL', ! IT WILL BE AS A SEQUENTIAL FILE - FORM ='UNFORMATTED', ! UNFORMATTED - TYPE ='NEW', ! A NEW FILE - EXTENDSIZE =1, ! EXTEND FILE 1 BLOCK AT A TIME - INITIALSIZE=5, ! START OUT 5 BLOCKS LONG - ERR =9000) ! WE HAVE A REAL PROBLEM IF WE GET HERE 140 IOPEN=1 ! FILE NOW OPEN IF(IDSW.NE.1 ) GOTO 100 ! IF UNSTOPPED BUT NO DATA, GET SOME DATA IF(TSKNAM.EQ.SYSLOG .OR. ! IF THE SENDER'S NAME IS SYSLOG OR - TSKNAM.EQ.TSKLOG .OR. ! IF IT IS 'TSKLOG' - ITSK1.EQ.IHEL .OR. ! HELXYZ OR - ITSK2.EQ.IHEL .OR. ! ...HEL OR - ITSK1.EQ.IBYE .OR. ! BYEXYZ OR - ITSK2.EQ.IBYE .OR. ! ...BYE OR - ITSK1.EQ.IUPD .OR. ! UPDXYZ OR - ITSK2.EQ.IUPD .OR. ! ...UPD - TSKNAM.EQ.TTP1 .OR. ! TTP1 - TSKNAM.EQ.RLPP0 .OR. ! LPP0 - TSKNAM.EQ.RLPP1) ! LPP1 - GOTO 200 ! THEN GO LOG DATA CALL R50ASC(6,TSKNAM,LTSKNM) ! CONVERT TO ASCII WRITE(5,150)LTSKNM 150 FORMAT(' LOG... -- UNSOLICITED DATA SENT FROM ',6A1) GOTO 400 ! ELSE TRY AGAIN 200 CONTINUE IF(ISNDBF(3).EQ.1 .OR. ! IF START PACKET - ISNDBF(3).EQ.4) ! OR CHANGE DELTA PACKET - IDLTA=ISNDBF(12)! THEN SET A NEW IDELTA WRITE(1,ERR=9020) ISTORE ! WRITE IT OUT D IF(ISNDBF(3).LT.5 .OR. ISNDBF(3) .GE.8) D - WRITE(5,210)LTSKNM,(ISNDBF(I),I=3,15) D210 FORMAT(' LOG... -- DATA RECEIVED FROM ',6A1,' :',/,' ',13I8) D IF(ISNDBF(3).EQ.5) WRITE(5,220) (ISNDBF(I),I=4,10) D220 FORMAT(' HELLO: 'I2,'/'I2,'/',I2,4X,O8,I4,O8,I4) D IF(ISNDBF(3).EQ.6)WRITE(5,230) (ISNDBF(I), I=4,13) D230 FORMAT(' BYE: ',I2,'/',I2,'/',I2, 4X,O8,I4,O8,4(O8)) 400 IF(IDLTA.LE.5)ISTOP=1 ! IF SAMPLES MORE OFTEN THAN EVERY 5 MIN, STOP IF(IDLTA.GT.5)ISTOP=0 ! ELSE EXIT IF(ISNDBF(3).EQ.-1) GOTO 9999 ! EXIT IF SYSLOG EXITS IF(ISTOP.EQ.0)CLOSE(UNIT=1) ! CLOSE UNIT IF RECIEVE DATA OR EXIT IF(ISTOP.EQ.0)IOPEN=0 ! SHOW FILE CLOSED GOTO 100 9000 WRITE(5,9010) 9010 FORMAT(' LOG... -- LB:[1,4]SYSLOG.DAT CAN NOT BE OPENED') GOTO 9999 9020 WRITE(5,9030) 9030 FORMAT(' LOG... -- WRITE ERROR TO LOG FILE') GOTO 9999 9999 WRITE(5,999) 999 FORMAT(' LOG... -- EXITING',/,' >') CALL EXIT END