$! V1.24 $ GOSUB I_MAIN $ IF CODFUN .NES. "U" $ THEN $ GOSUB CONVERT $ ENDIF $INTERRUPTED: $ABEND: $ GOSUB EXT_MAIN $ EXIT $! $I_MAIN: $ VFYSTS=F$ENVIRONMENT("VERIFY_PROCEDURE") $ SET NOVERIFY $ IF (F$MODE() .EQS. "NETWORK") THEN DEFINE SYS$OUTPUT SYS$NET: $ P0=F$ENVIRONMENT("PROCEDURE") $ PRGM=F$PARSE(P0,,,"NAME") $ CTRL=F$ENVIRONMENT("CONTROL") $ ON CONTROL_Y THEN GOTO INTERRUPTED $ ON WARNING_ERROR THEN CONTINUE $ ON ERROR THEN GOTO ABEND $ ON SEVERE_ERROR THEN GOTO ABEND $ SET CONTROL $ SET ON $ CODFUN=" " $ ESC[0,8]=%X1B $ CSI=ESC+"[" $ SI[0,8]=%X0F $ SO[0,8]=%X0E $ CR[0,8]=%X0D $ BEL[0,8]=%X07 $ HV[0,8]=%XFF $ CODFUN=" " $ FLG_DEL="FALSE" $ RETURN $! $EXT_MAIN: $ IF F$LOCATE("Y",CTRL) .GE. F$LENGHT(CTRL) THEN SET NOCONTROL $ IF VFYSTS .EQS. "TRUE" THEN SET VERIFY $ RETURN $! $CONVERT: $ SAY "" $ SAY "Conversione archivi V1.24" $ INQUIRE CODFUN "Funzione: (Sequenzializzazione,Indicizzazione,Compattazione,Uscita)?" $ IF CODFUN .EQS. "S" $ THEN $ GOSUB CVT_SEQ $ ELSE $ IF CODFUN .EQS. "I" $ THEN $ GOSUB CVT_IDX $ ELSE $ IF CODFUN .EQS. "C" $ THEN $ GOSUB CVT_COMP $ ENDIF $ ENDIF $ ENDIF $ IF CODFUN .NES. "U" THEN GOTO CONVERT $ RETURN $! $CVT_SEQ: $ IF F$SEARCH("GZ$BIN:KSEQ.FDL") .EQS. "" $ THEN $ SAY "Manca un componente essenziale: GZ$BIN:KSEQ.FDL!" $ RETURN $ ENDIF $ INQUIRE FIDX "Nome archivio indice da convertire" $ IF FIDX .EQS. "" THEN RETURN $ FIDX=F$PARSE(FIDX,".ISM") $ IF F$SEARCH(FIDX) .EQS. "" $ THEN $ SAY "Archivio ",FIDX," non trovato!" $ GOTO CVT_SEQ $ ENDIF $ FSEQ=F$PARSE(FIDX,,,"NAME")+".SEQ" $ FSEQ=F$PARSE(FSEQ,FIDX) $ INQUIRE DUMMY "Nome archivio senza indici [''FSEQ']" $ IF DUMMY .NES. "" THEN FSEQ=DUMMY $CVT2_SEQ: $ FSEQ=F$PARSE(FSEQ,".SEQ") $ FSEQ=F$PARSE(FSEQ,FIDX) $ SAY "$ CONVERT/STAT ''FIDX' -" $ SAY " ''FSEQ' /FDL=GZ$BIN:KSEQ" $ SAY " Working... " $ CONVERT/STAT 'FIDX' 'FSEQ' /FDL=GZ$BIN:KSEQ $ DIR 'FSEQ' $ RETURN $! $CVT_IDX: $ INQUIRE FSEQ "Nome archivio sequenziale da indicizzare" $ IF FSEQ .EQS. "" THEN RETURN $ FSEQ=F$PARSE(FSEQ,".SEQ") $ IF F$SEARCH(FSEQ) .EQS. "" $ THEN $ SAY "Archivio ",FSEQ," non trovato!" $ GOTO CVT_IDX $ ENDIF $ FIDL="GZ$BIN:"+F$PARSE(FSEQ,,,"NAME")+".FDL" $L01: $ IF F$SEARCH(FIDL) .EQS. "" $ THEN $ INQUIRE FIDL "Nome del file di definizione" $ ELSE $ GOTO X01 $ ENDIF $ FIDL=F$PARSE(FIDL,"GZ$BIN:.FDL") $ GOTO L01 $X01: $ FIDX=F$PARSE(FSEQ,,,"NAME")+".ISM" $ FIDX=F$PARSE(FIDX,FSEQ) $ INQUIRE DUMMY "Nome archivio indicizzato [''FIDX']" $ IF DUMMY .NES. "" THEN FIDX=DUMMY $CVT2_IDX: $ FIDX=F$PARSE(FIDX,".ISM") $ FIDX=F$PARSE(FIDX,FSEQ) $ FIDX=FIDX-";" $ FSEQ=FSEQ-";" $ FIDL=FIDL-";" $ SAY "$ CONVERT/STAT ''FSEQ' -" $ SAY " ''FIDX' /FDL=''FIDL'" $ SAY " Working... " $ GOSUB CHECK_FDL $ IF FLG_DEL THEN DELETE 'FIDX' $ CONVERT/STAT 'FSEQ' 'FIDX' /FDL='FIDL' $ DIR 'FIDX' $ RETURN $! $CVT_COMP: $ IF F$SEARCH("GZ$BIN:KSEQ.FDL") .EQS. "" $ THEN $ SAY "Manca un componente essenziale: GZ$BIN:KSEQ.FDL!" $ RETURN $ ENDIF $ INQUIRE FIDX "Nome archivio indice da comprimere" $ IF FIDX .EQS. "" THEN RETURN $ FIDX=F$PARSE(FIDX,".ISM") $ IF F$SEARCH(FIDX) .EQS. "" $ THEN $ SAY "Archivio ",FIDX," non trovato!" $ GOTO CVT_COMP $ ENDIF $ FSEQ="GZ$TMP:"+F$PARSE(FIDX,,,"NAME")+".SEQ" $ FSEQ=F$PARSE(FSEQ,FIDX) $ FIDL="GZ$BIN:"+F$PARSE(FSEQ,,,"NAME")+".FDL" $L02: $ IF F$SEARCH(FIDL) .EQS. "" $ THEN $ INQUIRE FIDL "Nome del file di definizione" $ ELSE $ GOTO X02 $ ENDIF $ FIDL=F$PARSE(FIDL,"GZ$BIN:.FDL") $ GOTO L02 $X02: $ INQUIRE DUMMY "Delete old index (Y,N)" $ FLG_DEL="FALSE" $ IF DUMMY .EQS. "Y" .OR. "S" THEN FLG_DEL="TRUE" $ GOSUB CVT2_SEQ $ GOSUB CVT2_IDX $ RETURN $! $CHECK_FDL: $ ALLOQ=F$FILE(FSEQ,"EOF") $ IF ALLOQ.GT.4 THEN ALLOQ=(ALLOQ/4)*4 $ IF F$PARSE(FSEQ,,,"NAME").EQS."KHELPMSG" THEN ALLOQ=ALLOQ/2 $ EXTEN=ALLOQ/8 $ OPEN/READ SRC 'FIDL' $ OPEN/WRITE DST TMP.FDL $ BLOCK=0 $CHK_LOOP: $ READ SRC RIGA/END=CHK_END $ RR=RIGA $ IF F$EXTRACT(0,1,RIGA) .EQS. " " $ THEN $ RI=F$EDIT(RIGA,"TRIM,COMPRESS") $ ID=F$ELEMENT(0," ",RI) $ GOSUB BLOCK_'BLOCK' $ ELSE $ IF RIGA .EQS. "FILE" THEN BLOCK=1 $ IF RIGA .EQS. "RECORD" THEN BLOCK=2 $ IF RIGA .EQS. "AREA 0" THEN BLOCK=3 $ IF RIGA .EQS. "KEY 0" THEN BLOCK=4 $ ENDIF $ WRITE DST RR $ GOTO CHK_LOOP $CHK_END: $ CLOSE DST $ CLOSE SRC $ COPY TMP.FDL 'FIDL'; $ DELETE TMP.FDL;* $ RETURN $BLOCK_0: $ RETURN $BLOCK_1: $ IF ID .EQS. "ALLOCATION" THEN RR=" ALLOCATION ''ALLOQ'" $ IF ID .EQS. "EXTENSION" THEN RR=" EXTENSION ''EXTEN'" $ IF ID .EQS. "NAME" THEN RR=" NAME "+f$parse(FIDX,,,"NAME")+".ISM" $ IF ID .EQS. "OWNER" THEN RR="" $ IF ID .EQS. "PROTECTION" THEN RR="" $ RETURN $BLOCK_2: $ RETURN $BLOCK_3: $ IF ID .EQS. "ALLOCATION" THEN RR=" ALLOCATION ''ALLOQ'" $ IF ID .EQS. "EXTENSION" THEN RR=" EXTENSION ''EXTEN'" $ RETURN $BLOCK_4: $ RETURN $BLOCK_5: $ RETURN $BLOCK_9: $ RR="" $ RETURN