//Z1SBKNRD JOB (U0016,N598,10),'SEDRS TO DISK',TIME=(2,30), // MSGCLASS=X,CLASS=A,NOTIFY=Z1SBK /*JOBPARM LINES=200 //FORTRAN EXEC FORTVCLG PROGRAM GETSEDR C C READ PRE 1990 VOYAGER SEDR FILES FROM TAPE AND WRITE TO DISK C CHARACTER SCID*1,DSN*6 CHARACTER*4 PROJID,FILEID CHARACTER*8 SEDRID,NAVID,DATAID LOGICAL*1 LNAV LOGICAL*4 LEX INTEGER*4 INAV(126,3),IHDR(45) REAL*4 RNAV(126,3) EQUIVALENCE ( INAV(1,1), RNAV(1,1) ), ( PROJID, IHDR(1) ), & ( FILEID, IHDR(2) ),( SEDRID, IHDR(4) ), & ( NAVID, IHDR(12) ),( DATAID, IHDR(14) ), & ( INAV(1,1), IHDR(1) ) C IHCNT = 0 ISEDR = 0 IREC = 0 5 CONTINUE C C READ HEADER RECORD ( 180 BYTES ) C READ(10,NUM=LEN,END=100) INAV IREC = IREC + 1 IF ( LEN.NE.180 ) THEN WRITE(6,*) 'ERROR - FIRST SEDR RECORD IS NOT A HEADER' STOP END IF WRITE(6,'(1X,''NEW HEADER: '',A8)') SEDRID 50 CONTINUE C C GET OUTPUT DSN NAME FROM TRUNCATED SEDR ID C DO I = 4,8 IF ( SEDRID(I:I).EQ.' ' ) SEDRID(I:I) = 'X' END DO DSN = SEDRID(3:8) INQUIRE(FILE='/Z1SBK.'//DSN//'.SDR',EXIST=LEX) IF ( LEX ) THEN WRITE(6,*) 'ERROR - NEW DSN ALREADY CATALOGED' OPEN(11,FILE='/Z1SBK.'//DSN//'.SDR', & STATUS='OLD',FORM='UNFORMATTED') ELSE C C OUTPUT DATASET FORMAT (RECFM=VB,LRECL=1516) C CALL FILEINF(ISTAT,'DEVICE','TEMPDA','TRK',100,'SECOND',50, & 'RECFM','VB','LRECL',1516) C WRITE(6,*) ISTAT,' FILEINF RETURN CODE UNIT 11' OPEN(11,FILE='/Z1SBK.'//DSN//'.SDR', & STATUS='NEW',FORM='UNFORMATTED') END IF C C WRITE BINARY HEADER RECORD C WRITE(11) IHDR IHCNT = IHCNT + 1 C 10 CONTINUE READ(10,NUM=LEN,END=100) INAV IREC = IREC + 1 C C CHECK FOR HEADER RECORD FROM CONCATENATED DATA SETS C IF ( LEN.EQ.180 ) THEN IF ( SEDRID(1:3).NE.'SMA' ) GOTO 10 CLOSE(11) WRITE(6,'(1X,''NEW HEADER: '',A8)') SEDRID IREC = 1 IHCNT = IHCNT + 1 C C OUTPUT SEPARATED SEDR DATA SETS C GOTO 50 END IF C C REMOVE IMPROPER LENGTH RECORDS C IF ( LEN.NE.1008 .AND. LEN.NE.1512 ) THEN WRITE(6,'(1X,''SEDR RECORD LENGTH ERROR - '', & ''RECORD '',I6,'' IS '',I5,'' BYTES'')') & IREC,LEN GOTO 10 END IF WRITE(6,'(8(1X,I5))') IREC,LEN,(INAV(I,1),I=1,6) WRITE(11) INAV ISEDR = ISEDR + 1 GOTO 10 100 CONTINUE WRITE(6,*) WRITE(6,*) IHCNT,' HEADER RECORDS WRITTEN' WRITE(6,*) ISEDR,' NAVIGATION/POINTING VECTOR RECORDS WRITTEN' WRITE(6,*) STOP END //LKED.SYSLIB DD DSN=SYS1.VLNKMLIB,DISP=SHR //GO.SYSUDUMP DD DUMMY //FT10F001 DD VOL=(PRIVATE,SER=S2090A),LABEL=(1,NL,,IN),UNIT=3480, // DCB=(RECFM=VBS,LRECL=1516,BLKSIZE=32760,OPTCD=B) //NOTIFY EXEC NOTIFY //