CREATE OR REPLACE FUNCTION SEF2_BLOCOH(
   P_CDEMPRESA    IN EMPRESA.CDEMPRESA%TYPE,
   P_CDINSCESTA   IN EMPRESA.CDINSCESTA%TYPE,
   P_DTINICIAL    IN NOTAFISCAL.DTENTRSAID%TYPE,
   P_DTFINAL      IN NOTAFISCAL.DTENTRSAID%TYPE,
   P_CDLIVROMAG   IN LIVROMAGNETICO.CDLIVROMAG%TYPE,
   P_PRF_RI       IN NOTAFISCAL.IDSTATUS%TYPE,
   P_DTINIPER     IN NOTAFISCAL.DTENTRSAID%TYPE,
   P_DTFINPER     IN NOTAFISCAL.DTENTRSAID%TYPE,
   P_TOTALIZA     IN NUMBER,
   P_NRSEQARQMAG  IN ARQMAGNETICO.NRSEQARQMAG%TYPE,
   P_IND_IPI      IN VARCHAR2,
   P_IND_ISS      IN VARCHAR2,
   P_MOVBLOCOH    OUT NUMBER) RETURN NUMBER
AS
   V_CONTREGH     NUMBER;
   V_MOVIMENT     NUMBER;
   V_DADOS        VARCHAR2(01);
   V_PRODUTO      VARCHAR2(100);
   V_SEQUPROD     NUMBER;
   V_VRTOTALINV   NUMBER;
   V_COD_PAR      VARCHAR2(30);

BEGIN
   V_DADOS := 'N';
   V_SEQUPROD := NVL(P_TOTALIZA,0);

   FOR C_REGH020 IN (SELECT ('|H020'                            || '|' ||
                             CASE /*IND_DT=0 - Levantado no último dia do ano civil, coincidente com a data do balanço*/
                                  WHEN (TO_CHAR(I.DTINVEFISCAL,'ddmm')='3112') AND (TO_CHAR(P_DTFINAL,'ddmm')='3112') THEN '0'
                                  /*IND_DT=1- Levantado no último dia do ano civil, divergente da data do balanço*/
                                  WHEN (TO_CHAR(I.DTINVEFISCAL,'ddmm')='3112') AND (TO_CHAR(P_DTFINAL,'ddmm')<>'3112') THEN '1'
                                  /*IND_DT=2- Levantado na data do balanço, divergente do último dia do ano civil*/
                                  WHEN (TO_CHAR(I.DTINVEFISCAL,'ddmm')<>'3112') AND (TO_CHAR(P_DTFINAL,'ddmm')=TO_CHAR(I.DTINVEFISCAL,'ddmm')) THEN '2'
                                  /*IND_DT=3- Levantado em data divergente da data do último balanço e divergente do último dia do ano civil*/
                                  WHEN (TO_CHAR(I.DTINVEFISCAL,'ddmm')<>'3112') AND (TO_CHAR(P_DTFINAL,'ddmm')<>TO_CHAR(I.DTINVEFISCAL,'ddmm')) THEN '3'
                             END || '|' ||
                             TO_CHAR(I.DTINVEFISCAL,'ddmmyyyy')   || '|' ||
                             REPLACE(LTRIM(TO_CHAR(NVL(SUM(ROUND(I.VRTOTINVFISC,2)),0), '999999999990.00')), '.', ',')  || '|' ||
                             '0,00' || '|' ||
                             '0,00' || '|' ||
                             '0,00' || '|' ||
                             '0,00' || '|' ||
                             '0,00' || '|' ||
                             REPLACE(LTRIM(TO_CHAR(NVL(SUM(ROUND(I.VRTOTINVFISC,2)),0), '999999999990.00')), '.', ',')  || '|' ||
                             '' || '|' ||
                             '' || '|'  ) AS DADOS,
                             TO_CHAR(I.DTINVEFISCAL,'ddmmyyyy') AS DTINVENTFISC, SUM(I.VRTOTINVFISC) AS VRTOTINVFISC, 'S' AS IDMOVI
                        FROM INVENTFISC I, RELACPRODITGEN R
                       WHERE I.CDEMPRESA     = P_CDEMPRESA
                         AND I.CDINSCESTA    = P_CDINSCESTA
                         AND I.DTINVEFISCAL BETWEEN P_DTINIPER AND P_DTFINPER
                         AND P_PRF_RI = 'S'
                         AND I.CDPRODUTO     = R.CDPRODUTO(+)
                         AND R.CDLIVROMAG    = P_CDLIVROMAG
						       AND (R.CDTPITEMPROD NOT IN ('01','10','02','03','04','06') OR (P_IND_IPI = 'S' OR P_IND_ISS = 'S'))
                      HAVING SUM(I.VRTOTINVFISC) > 0
                       GROUP BY I.DTINVEFISCAL
                       UNION ALL
                     /*LINHA GERADA QUANDO É INFORMADO QUE NÃO HÁ REGISTRO DE INVENTÁRIO CONFORME VALIDAÇÃO*/
                      SELECT ('|H020'|| '|' ||
                             CASE /*IND_DT=0 - Levantado no último dia do ano civil, coincidente com a data do balanço*/
                                  WHEN (TO_CHAR(P_DTFINPER,'ddmm')='3112') AND (TO_CHAR(P_DTFINAL,'ddmm')='3112') THEN '0'
                                  /*IND_DT=1- Levantado no último dia do ano civil, divergente da data do balanço*/
                                  WHEN (TO_CHAR(P_DTFINPER,'ddmm')='3112') AND (TO_CHAR(P_DTFINAL,'ddmm')<>'3112') THEN '1'
                                  /*IND_DT=2- Levantado na data do balanço, divergente do último dia do ano civil*/
                                  WHEN (TO_CHAR(P_DTFINPER,'ddmm')<>'3112') AND (TO_CHAR(P_DTFINAL,'ddmm')=TO_CHAR(P_DTFINPER,'ddmm')) THEN '2'
                                  /*IND_DT=3- Levantado em data divergente da data do último balanço e divergente do último dia do ano civil*/
                                  WHEN (TO_CHAR(P_DTFINPER,'ddmm')<>'3112') AND (TO_CHAR(P_DTFINAL,'ddmm')<>TO_CHAR(P_DTFINPER,'ddmm')) THEN '3'
                             END || '|' ||
                             TO_CHAR(P_DTFINPER,'ddmmyyyy') || '|' ||
                             '' || '|' ||
                             '' || '|' ||
                             '' || '|' ||
                             '' || '|' ||
                             '' || '|' ||
                             '' || '|' ||
                             '' || '|' ||
                             '' || '|' ||
                             '' || '|'  ) AS DADOS,
                             TO_CHAR(P_DTFINPER,'ddmmyyyy') AS DTINVENTFISC, 0 AS VRTOTINVFISC, 'N' AS IDMOVI
                        FROM DUAL
                       WHERE P_PRF_RI = 'N') LOOP
      V_DADOS := C_REGH020.IDMOVI;
      V_CONTREGH := NVL(V_CONTREGH,0) + 1;
      INSERT INTO ARQMAGNETICO
        (NRORDREGARQ, DSREGARQMAG, NRSEQARQMAG)
      VALUES
        ('801'||LPAD(RTRIM(V_CONTREGH), 7, '0'), C_REGH020.DADOS, P_NRSEQARQMAG);

      IF P_PRF_RI = 'S' THEN
         IF C_REGH020.VRTOTINVFISC > 0 THEN
            V_VRTOTALINV := 0;
            FOR C_REGH030 IN (SELECT ('|H030'                                                   || '|' ||
                                     '0'                                                       || '|' ||
                                     I.CDINSCESTA                                              || '|' ||
                                     CASE WHEN R.CDTPITEMPROD = '00' THEN '0'
                                          WHEN R.CDTPITEMPROD IN ('01','10') THEN '1'
                                          WHEN R.CDTPITEMPROD = '02' THEN '5'
                                          WHEN R.CDTPITEMPROD = '03' THEN '3'
                                          WHEN R.CDTPITEMPROD = '04' THEN '4'
                                          WHEN R.CDTPITEMPROD = '06' THEN '2'
                                          WHEN R.CDTPITEMPROD IN ('07','08') THEN '8'
                                          ELSE '9' END                                         || '|' ||
                                     LPAD(CASE WHEN R.CDTPITEMPROD IN ('00','01','10','02','03','04','06') THEN NVL(I.CDCLASFISC,P.CDCLASFISC) ELSE '' END,8,'0') || '|' ||
                                     NVL(P.CDARVPROD,'')                                       || '|' ||
                                     NVL(P.SGUNIDADE,'')                                       || '|' ||
                                     REPLACE(LTRIM(TO_CHAR(NVL(ROUND((I.VRTOTINVFISC/I.QTESTINVFISC),6),0), '999999999990.000000')), '.', ',') || '|' ||
                                     REPLACE(LTRIM(TO_CHAR(NVL(ROUND(I.QTESTINVFISC,6),0), '999999999990.000000')), '.', ',')   || '|' ||
                                     REPLACE(LTRIM(TO_CHAR(NVL(ROUND(I.VRTOTINVFISC,2),0), '999999999990.00')), '.', ',')   || '|' ||
                                     '0,00'                                                    || '|' ||
                                     '0,00'                                                    || '|' ||
                                     '0,00'                                                    || '|' ||
                                     '0,00'                                                    || '|' ||
                                     '0,00'                                                    || '|' ||
                                     ''                                                        || '|'  ) AS DADOS,
                                     NVL(P.CDPRODUTO,'') AS CDPRODUTO, ROUND(I.VRTOTINVFISC,2) AS VRTOTINVFISC, I.CDINSCESTA
                                FROM INVENTFISC I, PRODUTO P, RELACPRODITGEN R
                               WHERE I.CDEMPRESA    = P_CDEMPRESA
                                 AND I.CDINSCESTA   = P_CDINSCESTA
                                 AND I.DTINVEFISCAL = C_REGH020.DTINVENTFISC
                                 AND I.CDPRODUTO    = P.CDPRODUTO
                                 AND I.QTESTINVFISC <> 0
                                 AND P.CDPRODUTO    = R.CDPRODUTO
                                 AND R.CDLIVROMAG   = P_CDLIVROMAG
                                 AND (R.CDTPITEMPROD NOT IN ('01','10','02','03','04','06') OR (P_IND_IPI = 'S' OR P_IND_ISS = 'S'))) LOOP

               V_DADOS := 'S';
               V_VRTOTALINV := V_VRTOTALINV + C_REGH030.VRTOTINVFISC;
               V_CONTREGH := NVL(V_CONTREGH,0) + 1;
               INSERT INTO ARQMAGNETICO
                  (NRORDREGARQ, DSREGARQMAG, NRSEQARQMAG)
               VALUES
                  ('801'||LPAD(RTRIM(V_CONTREGH), 7, '0'), C_REGH030.DADOS, P_NRSEQARQMAG);

               /* CODIDO DO PARTICIPANTE - LINHA 0150*/
               SELECT MAX(CDCHAVEREG)
                 INTO V_COD_PAR
                 FROM TMP_REGDADOSSEF2
                WHERE CDCHAVEREG = C_REGH030.CDINSCESTA
                  AND CDREGISTRO = '0150';
               IF (V_COD_PAR IS NULL) AND (C_REGH030.CDINSCESTA IS NOT NULL) THEN
                  V_SEQUPROD := NVL(V_SEQUPROD,0) + 1;
                  INSERT INTO TMP_REGDADOSSEF2
                    (CDREGISTRO, CDCONTREGI, CDCHAVEREG, CDCAMPO1, CDCAMPO2)
                  VALUES
                    ('0150', V_SEQUPROD, C_REGH030.CDINSCESTA, 'I', 'S');
               END IF;
               V_COD_PAR := null;

               /* CODIGO DO PRODUTO */
               SELECT MAX(CDCHAVEREG)
                 INTO V_PRODUTO
                 FROM TMP_REGDADOSSEF2
                WHERE CDCHAVEREG = C_REGH030.CDPRODUTO
                  AND CDREGISTRO = '0200';

               IF (V_PRODUTO IS NULL) AND (C_REGH030.CDPRODUTO IS NOT NULL) THEN
                  V_SEQUPROD := NVL(V_SEQUPROD,0) + 1;
                  INSERT INTO TMP_REGDADOSSEF2
                    (CDREGISTRO, CDCONTREGI, CDCHAVEREG)
                  VALUES
                    ('0200', V_SEQUPROD, C_REGH030.CDPRODUTO);
               END IF;
               V_PRODUTO := NULL;

            END LOOP;

            /*REGISTRO H040*/
            V_CONTREGH := NVL(V_CONTREGH,0) + 1;
            INSERT INTO ARQMAGNETICO
               (NRORDREGARQ, DSREGARQMAG, NRSEQARQMAG)
            VALUES
               ('801'||LPAD(RTRIM(V_CONTREGH),7,'0'),'|H040|0|'||REPLACE(LTRIM(TO_CHAR(NVL(ROUND(V_VRTOTALINV,2),0),'999999999990.00')),'.',',')||'|',P_NRSEQARQMAG);

            /*REGISTRO H050*/
            FOR C_REGH050 IN (SELECT ('|H050'                                                                                   || '|' ||
                                     CASE WHEN R.CDTPITEMPROD = '00' THEN '0'
                                          WHEN R.CDTPITEMPROD IN ('01','10') THEN '1'
                                          WHEN R.CDTPITEMPROD = '02' THEN '5'
                                          WHEN R.CDTPITEMPROD = '03' THEN '3'
                                          WHEN R.CDTPITEMPROD = '04' THEN '4'
                                          WHEN R.CDTPITEMPROD = '06' THEN '2'
                                          WHEN R.CDTPITEMPROD IN ('07','08') THEN '8'
                                          ELSE '9' END                                         || '|' ||
                                     REPLACE(LTRIM(TO_CHAR(NVL(SUM(ROUND(I.VRTOTINVFISC,2)),0), '999999999990.00')), '.', ',') || '|' ) AS DADOS
                                FROM INVENTFISC I, RELACPRODITGEN R
                               WHERE I.CDEMPRESA    = P_CDEMPRESA
                                 AND I.CDINSCESTA   = P_CDINSCESTA
                                 AND I.DTINVEFISCAL = C_REGH020.DTINVENTFISC
                                 AND I.QTESTINVFISC <> 0
                                 AND I.CDPRODUTO    = R.CDPRODUTO
                                 AND R.CDLIVROMAG   = P_CDLIVROMAG
                                 AND (R.CDTPITEMPROD NOT IN ('01','10','02','03','04','06') OR (P_IND_IPI = 'S' OR P_IND_ISS = 'S'))
                               GROUP BY CASE WHEN R.CDTPITEMPROD = '00' THEN '0'
                                             WHEN R.CDTPITEMPROD IN ('01','10') THEN '1'
                                             WHEN R.CDTPITEMPROD = '02' THEN '5'
                                             WHEN R.CDTPITEMPROD = '03' THEN '3'
                                             WHEN R.CDTPITEMPROD = '04' THEN '4'
                                             WHEN R.CDTPITEMPROD = '06' THEN '2'
                                             WHEN R.CDTPITEMPROD IN ('07','08') THEN '8'
                                             ELSE '9' END
                               ORDER BY CASE WHEN R.CDTPITEMPROD = '00' THEN '0'
                                             WHEN R.CDTPITEMPROD IN ('01','10') THEN '1'
                                             WHEN R.CDTPITEMPROD = '02' THEN '5'
                                             WHEN R.CDTPITEMPROD = '03' THEN '3'
                                             WHEN R.CDTPITEMPROD = '04' THEN '4'
                                             WHEN R.CDTPITEMPROD = '06' THEN '2'
                                             WHEN R.CDTPITEMPROD IN ('07','08') THEN '8'
                                             ELSE '9' END) LOOP

               V_CONTREGH := NVL(V_CONTREGH,0) + 1;
               INSERT INTO ARQMAGNETICO
                  (NRORDREGARQ, DSREGARQMAG, NRSEQARQMAG)
               VALUES
                  ('801'||LPAD(RTRIM(V_CONTREGH), 7, '0'), C_REGH050.DADOS, P_NRSEQARQMAG);
            END LOOP;

            /*REGISTRO H060*/
            FOR C_REGH060 IN (SELECT ('|H060'                                                                                  || '|' ||
                                     LPAD(NVL(I.CDCLASFISC,P.CDCLASFISC),8,'0')                                                || '|' ||
                                     REPLACE(LTRIM(TO_CHAR(NVL(SUM(ROUND(I.VRTOTINVFISC,2)),0), '999999999990.00')), '.', ',') || '|' ) AS DADOS
                                FROM INVENTFISC I, PRODUTO P, RELACPRODITGEN R
                               WHERE I.CDEMPRESA    = P_CDEMPRESA
                                 AND I.CDINSCESTA   = P_CDINSCESTA
                                 AND I.DTINVEFISCAL = C_REGH020.DTINVENTFISC
                                 AND I.CDPRODUTO    = P.CDPRODUTO
                                 AND I.QTESTINVFISC <> 0
                                 AND I.CDPRODUTO     = R.CDPRODUTO(+)
                                 AND R.CDLIVROMAG(+) = P_CDLIVROMAG
								         AND (NVL(R.CDTPITEMPROD,'N') NOT IN ('01','10','02','03','04','06') OR (P_IND_IPI = 'S' OR P_IND_ISS = 'S'))
                               GROUP BY LPAD(NVL(I.CDCLASFISC,P.CDCLASFISC),8,'0')
                               ORDER BY LPAD(NVL(I.CDCLASFISC,P.CDCLASFISC),8,'0')) LOOP

               V_CONTREGH := NVL(V_CONTREGH,0) + 1;
               INSERT INTO ARQMAGNETICO
                  (NRORDREGARQ, DSREGARQMAG, NRSEQARQMAG)
               VALUES
                  ('801'||LPAD(RTRIM(V_CONTREGH), 7, '0'), C_REGH060.DADOS, P_NRSEQARQMAG);
            END LOOP;
         END IF;
      END IF;
   END LOOP;

   /* abertura do bloco H */
   IF ((V_CONTREGH <> 0) AND (V_DADOS <> 'N')) THEN
      V_MOVIMENT := 0;
   ELSE
      V_MOVIMENT := 1;
   END IF;
   V_CONTREGH := NVL(V_CONTREGH,0) + 1;
   INSERT INTO ARQMAGNETICO
     (NRORDREGARQ, DSREGARQMAG, NRSEQARQMAG)
   VALUES
     ('800'||LPAD(RTRIM(V_CONTREGH), 7, '0'), '|H001' || '|' ||V_MOVIMENT|| '|' , P_NRSEQARQMAG);

   /* encerramento do bloco H */
   V_CONTREGH := NVL(V_CONTREGH,0) + 1;
   INSERT INTO ARQMAGNETICO
     (NRORDREGARQ, DSREGARQMAG, NRSEQARQMAG  )
   VALUES
     ('899'||LPAD(RTRIM(V_CONTREGH), 7, '0'), '|H990'|| '|' ||V_CONTREGH   || '|', P_NRSEQARQMAG);
   P_MOVBLOCOH := V_MOVIMENT; /*UTILIZADO PARA INDICAR BLOCO SEM DADOS NOS REGISTROS 0001 E 9001*/
   RETURN(V_CONTREGH);
END;
/

CREATE OR REPLACE PROCEDURE ARQUIVO_SEF2(
   P_CDIMPOSTO    IN IMPOSTO.CDIMPOSTO%TYPE,
   P_CDEMPRESA    IN EMPRESA.CDEMPRESA%TYPE,
   P_CDINSCESTA   IN EMPRESA.CDINSCESTA%TYPE,
   P_CDINSCMUNI   IN EMPRESA.CDINSCMUNI%TYPE,
   P_DTINICIAL    IN NOTAFISCAL.DTENTRSAID%TYPE,
   P_DTFINAL      IN NOTAFISCAL.DTENTRSAID%TYPE,
   P_CDLIVROMAG   IN LIVROMAGNETICO.CDLIVROMAG%TYPE,
   P_SUFRAMA      IN VARCHAR2,
   P_ARQUIVO      IN VARCHAR2,
   P_VERSAO       IN VARCHAR2,
   P_FINALIDADE   IN VARCHAR2,
   P_PRF_RI       IN VARCHAR2,
   P_IND_EC       IN VARCHAR2,
   P_IND_ISS      IN VARCHAR2,
   P_IND_ST       IN VARCHAR2,
   P_IND_AT       IN VARCHAR2,
   P_IND_IPI      IN VARCHAR2,
   P_IND_RI       IN VARCHAR2,
   P_BLOCOH       IN VARCHAR2,
   P_DTINIPER     IN NOTAFISCAL.DTENTRSAID%TYPE,
   P_DTFINPER     IN NOTAFISCAL.DTENTRSAID%TYPE,
   P_NRSEQARQMAG  IN ARQMAGNETICO.NRSEQARQMAG%TYPE)
AS
   V_CONTREG0     NUMBER;
   V_CONTREGC_AUX VARCHAR2(20);
   V_CONTREGC     NUMBER;
   V_CONTREGE     NUMBER;
   V_CONTREGF     NUMBER;
   V_CONTREGG     NUMBER;
   V_CONTREGH     NUMBER;
   V_CONTREG9     NUMBER;
   V_TOTSEF2      NUMBER;
   V_TOTALIZA     NUMBER;
   V_MOVBLOCOH    NUMBER;
BEGIN
   V_TOTSEF2 := 0;
   DELETE FROM TMP_REGDADOSSEF2;
   COMMIT;

----------------------------------------------------  /* BLOCO C */   ----------------------------------------------
   IF P_ARQUIVO = '1' THEN
      V_CONTREGC := 0;
      V_CONTREGC_AUX := SEF2_BLOCOC(P_CDIMPOSTO,P_CDEMPRESA,P_CDINSCESTA,P_DTINICIAL,P_DTFINAL,P_IND_IPI,P_NRSEQARQMAG);
      V_CONTREGC := TO_NUMBER(SUBSTR(V_CONTREGC_AUX,1,10));
      V_TOTALIZA := TO_NUMBER(SUBSTR(V_CONTREGC_AUX,10,10));
----------------------------------------------------  /* BLOCO E */   ----------------------------------------------
   ELSIF P_ARQUIVO = '2' THEN
      V_CONTREGE := 0;
      V_CONTREGE := SEF2_BLOCOE (P_CDIMPOSTO,P_CDEMPRESA,P_CDINSCESTA,P_DTINICIAL,P_DTFINAL,P_IND_IPI,P_CDLIVROMAG,P_NRSEQARQMAG);
----------------------------------------------------  /* BLOCO F */   ----------------------------------------------
/*      V_CONTREGE := 0;
      V_CONTREGF := SEF2_BLOCOF (P_CDIMPOSTO,P_CDEMPRESA,P_CDINSCESTA,P_DTINICIAL,P_DTFINAL,P_NRSEQARQMAG);*/
------------------------------------------------------/* BLOCO G  */ -----------------------------------------------
/*      V_CONTREGG:= 0;
      V_CONTREGG:= SEF2_BLOCOG(P_CDEMPRESA,P_CDINSCESTA,P_DTINICIAL,P_DTFINAL,P_CDIMPOSTO,P_NRSEQARQMAG);*/
---------------------------------------------------- /*  BLOCO H  */ -----------------------------------------------
   ELSIF P_ARQUIVO = '3' THEN
      V_CONTREGH := 0;
      V_CONTREGH := SEF2_BLOCOH(P_CDEMPRESA,P_CDINSCESTA,P_DTINICIAL,P_DTFINAL,P_CDLIVROMAG,P_PRF_RI,P_DTINIPER,P_DTFINPER,V_TOTALIZA,P_NRSEQARQMAG,P_IND_IPI,P_IND_ISS,V_MOVBLOCOH);
   END IF;
----------------------------------------------------  /* ABERTURA */  ----------------------------------------------
   V_CONTREG0 := 0;
   V_CONTREG0 := SEF2_BLOCO0(P_CDEMPRESA,P_CDINSCESTA,P_CDINSCMUNI,P_DTINICIAL,P_DTFINAL,P_CDLIVROMAG,P_SUFRAMA,P_ARQUIVO,P_VERSAO,P_FINALIDADE,
                             P_PRF_RI,P_IND_EC,P_IND_ISS,P_IND_ST,P_IND_AT,P_IND_IPI,P_IND_RI,P_DTINIPER,P_DTFINPER,P_NRSEQARQMAG,V_MOVBLOCOH);
----------------------------------------------------  /*  BLOCO 9  */  ---------------------------------------------
   V_CONTREG9 := 0;
   V_CONTREG9 := SEF2_BLOCO9(P_NRSEQARQMAG,V_MOVBLOCOH);
-------------------------------------   /* ENCERRAMENTO TOTAL DO BLOCO */ ---------------------------------------------

   /* total de linhas do arquivo é somado mais um quando insere na tabela para que seja considerado o ultimo registro 9999 */
   BEGIN
      SELECT COUNT(*)
      INTO V_TOTSEF2
      FROM ARQMAGNETICO
      WHERE NRSEQARQMAG = P_NRSEQARQMAG;
   EXCEPTION
      WHEN NO_DATA_FOUND THEN
         V_TOTSEF2 := 0;
   END;
   INSERT INTO ARQMAGNETICO
     (NRORDREGARQ, DSREGARQMAG, NRSEQARQMAG)
   VALUES
     ('999'||LPAD(RTRIM(V_CONTREG9), 7, '0'), '|9999'|| '|' ||RTRIM(V_TOTSEF2+1)|| '|',  P_NRSEQARQMAG);
END; 