&ANALYZE-SUSPEND _VERSION-NUMBER AB_v10r12 &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS Procedure /*------------------------------------------------------------------------ File : Purpose : Syntax : Description : Author(s) : Created : Notes : ----------------------------------------------------------------------*/ /* This .W file was created with the Progress AppBuilder. */ /*----------------------------------------------------------------------*/ /* *************************** Definitions ************************** */ DEF VAR xRecArt AS CHAR NO-UNDO INIT 'ABONUS,ARABGRP,AREG,TRAUB,FARB,HERST'. DEF VAR cFirma AS CHAR INIT '1000' NO-UNDO. DEF STREAM out. DEF STREAM artst. DEF TEMP-TABLE tGruppen NO-UNDO FIELD cKey AS CHAR FIELD cWert AS CHAR FIELD iAnz AS INT FIELD aktiv AS LOG INIT FALSE. DEF TEMP-TABLE tArtst NO-UNDO LIKE Artst FIELD KGeb AS INT FIELD iRecid AS RECID INDEX tArtst-k1 IS PRIMARY UNIQUE Firma Artnr Inhalt Jahr INDEX tArtst-k2 Firma FremdNr. DEF TEMP-TABLE tArtstN NO-UNDO LIKE Artst FIELD KGeb AS INT FIELD iRecid AS RECID INDEX tArtstN-k1 IS PRIMARY UNIQUE Firma Artnr Inhalt Jahr INDEX tArtstN-k2 Firma FremdNr. DEF TEMP-TABLE tDateien NO-UNDO FIELD cName AS CHAR. DEF TEMP-TABLE tKGebinde LIKE KGebinde FIELD Aktiv AS LOG. DEF TEMP-TABLE tVGebinde LIKE VGebinde FIELD Aktiv AS LOG. DEF TEMP-TABLE tGGebinde LIKE GGebinde FIELD Aktiv AS LOG. DEF TEMP-TABLE tWarenGrp LIKE Warengrp FIELD Aktiv AS LOG. DEF TEMP-TABLE tProdGrp LIKE Prodgrp FIELD Aktiv AS LOG. DEF TEMP-TABLE tArtikGrp LIKE Artikgrp FIELD Aktiv AS LOG. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-PREPROCESSOR-BLOCK /* ******************** Preprocessor Definitions ******************** */ &Scoped-define PROCEDURE-TYPE Procedure &Scoped-define DB-AWARE no /* _UIB-PREPROCESSOR-BLOCK-END */ &ANALYZE-RESUME /* *********************** Procedure Settings ************************ */ &ANALYZE-SUSPEND _PROCEDURE-SETTINGS /* Settings for THIS-PROCEDURE Type: Procedure Allow: Frames: 0 Add Fields to: Neither Other Settings: CODE-ONLY COMPILE */ &ANALYZE-RESUME _END-PROCEDURE-SETTINGS /* ************************* Create Window ************************** */ &ANALYZE-SUSPEND _CREATE-WINDOW /* DESIGN Window definition (used by the UIB) CREATE WINDOW Procedure ASSIGN HEIGHT = 15 WIDTH = 60. /* END WINDOW DEFINITION */ */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK Procedure /* *************************** Main Block *************************** */ RUN ARTIKEL_TABELLEN. RUN REORG_ARTIKEL. RUN REORG_DEBITOR. RUN NEUE_ARTIKELNUMMER. RUN UMNUMMERIEREN. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* ********************** Internal Procedures *********************** */ &IF DEFINED(EXCLUDE-ARTIKEL_TABELLEN) = 0 &THEN &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ARTIKEL_TABELLEN Procedure PROCEDURE ARTIKEL_TABELLEN : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEF VAR cRecArt AS CHAR NO-UNDO. DEF VAR ix AS INT NO-UNDO. DEF VAR iCodeI AS INT NO-UNDO. DO ix = 1 TO NUM-ENTRIES(xRecArt, ','): cRecArt = ENTRY(ix, xRecArt, ','). FOR EACH Tabel WHERE Tabel.Firma = cFirma AND Tabel.RecArt = cRecart: ASSIGN Tabel.Int_1 = 0. END. FOR EACH Artst NO-LOCK WHERE Artst.Firma = cFirma AND Artst.Aktiv : CASE cRecArt: WHEN 'ABONUS' THEN iCodeI = Artst.Bonus_Grp . WHEN 'ARABGRP' THEN iCodeI = Artst.Rab_Grp . WHEN 'AREG' THEN iCodeI = Artst.Reg_Grp . WHEN 'TRAUB' THEN iCodeI = Artst.Traub_Grp . WHEN 'FARB' THEN iCodeI = Artst.Farbe . WHEN 'HERST' THEN iCodeI = Artst.Herst . END. FIND Tabel WHERE Tabel.Firma = cFirma AND Tabel.RecArt = cRecArt AND Tabel.CodeI = iCodeI AND Tabel.CodeC = '' AND Tabel.Sprcd = 1. ASSIGN Tabel.Int_1 = 1. END. FOR EACH Tabel WHERE Tabel.Firma = cFirma AND Tabel.RecArt = cRecart. IF Tabel.Int_1 = 0 THEN DELETE Tabel. ELSE Tabel.Int_1 = 0. END. END. EMPTY TEMP-TABLE tWarengrp. EMPTY TEMP-TABLE tProdgrp . EMPTY TEMP-TABLE tArtikgrp. FOR EACH Warengrp NO-LOCK WHERE Warengrp.Firma = cFirma. CREATE tWarengrp. BUFFER-COPY Warengrp to tWarengrp ASSIGN tWarengrp.Aktiv = FALSE. END. FOR EACH Prodgrp NO-LOCK WHERE Prodgrp.Firma = cFirma. CREATE tProdgrp. BUFFER-COPY Prodgrp to tProdgrp ASSIGN tProdgrp.Aktiv = FALSE. END. FOR EACH Artikgrp NO-LOCK WHERE Artikgrp.Firma = cFirma. CREATE tArtikgrp. BUFFER-COPY Artikgrp to tArtikgrp ASSIGN tArtikgrp.Aktiv = FALSE. END. FOR EACH Artst NO-LOCK WHERE Artst.Firma = cFirma AND Artst.Aktiv: FIND tWarengrp WHERE tWarengrp.Firma = cFirma AND tWarengrp.Wgr = Artst.Wg_Grp NO-ERROR. IF NOT AVAILABLE tWarengrp THEN DO: CREATE Warengrp. ASSIGN Warengrp.Firma = cFirma Warengrp.Wgr = Artst.Wg_Grp Warengrp.Bez1 = 'unbekannt'. CREATE tWarengrp. BUFFER-COPY Warengrp TO tWarengrp ASSIGN tWarengrp.Aktiv = TRUE. END. ELSE tWarengrp.Aktiv = TRUE. END. FOR EACH Artst NO-LOCK WHERE Artst.Firma = cFirma AND Artst.Aktiv: FIND tProdgrp WHERE tProdgrp.Firma = cFirma AND tProdgrp.Wgr = Artst.Wg_Grp AND tProdgrp.Prod_Grp = Artst.Prod_Grp NO-ERROR. IF NOT AVAILABLE tProdgrp THEN DO: CREATE Prodgrp. ASSIGN Prodgrp.Firma = cFirma Prodgrp.Wgr = Artst.Wg_Grp Prodgrp.Prod_Grp = Artst.Prod_Grp Prodgrp.Bez1 = 'unbekannt'. CREATE tProdgrp. BUFFER-COPY Prodgrp TO tProdgrp ASSIGN tProdgrp.Aktiv = TRUE. END. ELSE tProdgrp.Aktiv = TRUE. END. FOR EACH Artst NO-LOCK WHERE Artst.Firma = cFirma AND Artst.Aktiv: FIND tArtikgrp WHERE tArtikgrp.Firma = cFirma AND tArtikgrp.Wgr = Artst.Wg_Grp AND tArtikgrp.Prod_Grp = Artst.Prod_Grp AND tArtikgrp.Art_Grp = Artst.Art_Grp NO-ERROR. IF NOT AVAILABLE tArtikgrp THEN DO: CREATE Artikgrp. ASSIGN Artikgrp.Firma = cFirma Artikgrp.Wgr = Artst.Wg_Grp Artikgrp.Prod_Grp = Artst.Prod_Grp Artikgrp.Art_Grp = Artst.Art_Grp Artikgrp.Bez1 = 'unbekannt'. CREATE tArtikgrp. BUFFER-COPY Artikgrp TO tArtikgrp ASSIGN tArtikgrp.Aktiv = TRUE. END. ELSE tArtikgrp.Aktiv = TRUE. END. FOR EACH tArtikgrp WHERE NOT tArtikgrp.Aktiv: FIND Artikgrp OF tArtikgrp. DELETE Artikgrp. END. FOR EACH tProdGrp WHERE NOT tProdGrp.Aktiv: FIND ProdGrp OF tProdGrp. DELETE ProdGrp. END. FOR EACH tWarenGrp WHERE NOT tWarenGrp.Aktiv: FIND WarenGrp OF WarenGrp. DELETE WarenGrp. END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ENDIF &IF DEFINED(EXCLUDE-NEUE_ARTIKELNUMMER) = 0 &THEN &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE NEUE_ARTIKELNUMMER Procedure PROCEDURE NEUE_ARTIKELNUMMER : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEF VAR Artnr AS INT INIT 0 NO-UNDO. EMPTY TEMP-TABLE tArtst. EMPTY TEMP-TABLE tArtstN. FOR EACH Artst NO-LOCK: CREATE tArtst. BUFFER-COPY Artst TO tArtst. ASSIGN tArtst.iRecid = RECID(Artst). END. Artnr = 100000. FOR EACH tArtst BY tArtst.Wg_Grp BY tArtst.Herst BY tArtst.Bez BY tArtst.KGeb : Artnr = Artnr + 1. CREATE tArtstN. BUFFER-COPY tArtst EXCEPT Artnr Inhalt Jahr FremdNr TO tArtstN ASSIGN tArtstN.Artnr = Artnr tArtstN.Inhalt = 0 tArtstN.Jahr = tArtst.Jahr tArtstN.FremdNr = STRING(tArtst.Artnr ,'999999') + STRING(tArtst.Inhalt,'9999') + STRING(tArtst.Jahr ,'9999'). END. FOR EACH tArtstN: IF tArtstN.Wg_Grp = 05 THEN NEXT. IF tArtstN.Wg_Grp = 07 THEN NEXT. IF tArtstN.Wg_Grp = 08 THEN NEXT. ASSIGN tArtstN.Jahr = 0. END. FOR EACH _Field WHERE _Field._Field-Name = 'Artnr', FIRST _File OF _Field: CREATE tDateien. ASSIGN tDateien.cName = _File._File-Name. END. OUTPUT TO 'D:\Temp\Huber_Artst_N.csv' NO-MAP NO-CONVERT. FOR EACH tArtstN NO-LOCK: EXPORT DELIMITER ';' tArtstN. END. OUTPUT CLOSE. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ENDIF &IF DEFINED(EXCLUDE-REORG_ARTIKEL) = 0 &THEN &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE REORG_ARTIKEL Procedure PROCEDURE REORG_ARTIKEL : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEF VAR cWert AS CHAR NO-UNDO. DEF VAR iWert AS INT NO-UNDO. DEF VAR cRecArt AS CHAR NO-UNDO. DEF VAR yRecArt AS CHAR NO-UNDO. DEF VAR ix AS INT NO-UNDO. DEF BUFFER bArtst FOR Artst. FOR EACH Artst WHERE Artst.Firma = cFirma: IF NOT Artst.Aktiv THEN NEXT. IF Artst.Bestand > 0 THEN NEXT. IF Artst.EDat >= 07/01/2003 THEN NEXT. FIND FIRST Artbw NO-LOCK USE-INDEX Artbw-k9 WHERE Artbw.Firma = Artst.Firma AND Artbw.Artnr = Artst.Artnr AND Artbw.Inhalt = Artst.Inhalt AND Artbw.Jahr = Artst.Jahr NO-ERROR. IF NOT AVAILABLE Artbw OR Artbw.Datum < 07/01/2003 THEN DO: Artst.Aktiv = FALSE. END. END. EMPTY TEMP-TABLE tKGebinde. EMPTY TEMP-TABLE tVGebinde. EMPTY TEMP-TABLE tGGebinde. FOR EACH KGebinde WHERE KGebinde.Firma = cFirma NO-LOCK: CREATE tKGebinde. BUFFER-COPY KGebinde TO tKGebinde ASSIGN tKGebinde.Aktiv = FALSE. END. FOR EACH Artst NO-LOCK WHERE Artst.Firma = '1000' AND Artst.Aktiv = TRUE BREAK BY Artst.KGeb_Cd: IF FIRST-OF ( Artst.KGeb_Cd ) THEN DO: FIND FIRST tKGebinde WHERE tKGebinde.Firma = Artst.Firma AND tKGebinde.Geb_Cd = Artst.KGeb_Cd NO-ERROR. tKGebinde.Aktiv = TRUE. END. END. FOR EACH tKGebinde WHERE NOT tkgebinde.aktiv. FIND KGebinde OF tKGebinde. DELETE KGebinde. END. FOR EACH VGebinde WHERE VGebinde.Firma = cFirma NO-LOCK: CREATE tVGebinde. BUFFER-COPY VGebinde TO tVGebinde ASSIGN tVGebinde.Aktiv = FALSE. END. FOR EACH Artst NO-LOCK WHERE Artst.Firma = '1000' AND Artst.Aktiv = TRUE BREAK BY Artst.VGeb_Cd: IF FIRST-OF ( Artst.VGeb_Cd ) THEN DO: FIND FIRST tVGebinde WHERE tVGebinde.Firma = Artst.Firma AND tVGebinde.Geb_Cd = Artst.VGeb_Cd. tVGebinde.Aktiv = TRUE. END. END. FOR EACH tVGebinde WHERE NOT tVGebinde.aktiv. FIND VGebinde OF tVGebinde. DELETE VGebinde. END. FOR EACH GGebinde WHERE GGebinde.Firma = cFirma NO-LOCK: CREATE tGGebinde. BUFFER-COPY GGebinde TO tGGebinde ASSIGN tGGebinde.Aktiv = FALSE. END. FOR EACH Artst NO-LOCK WHERE Artst.Firma = '1000' AND Artst.Aktiv = TRUE BREAK BY Artst.GGeb_Cd: IF FIRST-OF ( Artst.GGeb_Cd ) THEN DO: FIND FIRST tGGebinde WHERE tGGebinde.Firma = Artst.Firma AND tGGebinde.Geb_Cd = Artst.GGeb_Cd. tGGebinde.Aktiv = TRUE. END. END. FOR EACH tGGebinde WHERE NOT tGGebinde.aktiv. FIND GGebinde OF tGGebinde. DELETE GGebinde. END. /* FOR EACH Artst WHERE Artst.Firma = '1000' AND Artst.Aktiv : IF Artst.Wg_Grp > 16 THEN ASSIGN Artst.Sk_Ber = FALSE. ELSE Artst.Sk_Ber = TRUE. IF Artst.Wg_Grp = 9 THEN ASSIGN Artst.Sk_Ber = FALSE. ASSIGN Artst.Netto = TRUE. IF Artst.Wg_Grp < 6 THEN ASSIGN Artst.Netto = FALSE. IF Artst.Wg_Grp > 10 AND Artst.Wg_Grp < 13 THEN ASSIGN Artst.Netto = FALSE. IF Artst.Wg_Grp > 13 AND Artst.Wg_Grp < 17 THEN ASSIGN Artst.Netto = FALSE. END. */ END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ENDIF &IF DEFINED(EXCLUDE-REORG_DEBITOR) = 0 &THEN &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE REORG_DEBITOR Procedure PROCEDURE REORG_DEBITOR : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEF VAR cWert AS CHAR NO-UNDO. DEF VAR iWert AS INT NO-UNDO. DEF VAR cRecArt AS CHAR NO-UNDO. DEF VAR yRecArt AS CHAR NO-UNDO. DEF VAR ix AS INT NO-UNDO. DEF BUFFER bArtst FOR Artst. FOR EACH Tabel WHERE Tabel.Firma = '1000' AND Tabel.RecArt = 'PREGRP': Tabel.Int_2 = 0. END. FOR EACH Debst NO-LOCK WHERE Debst.Firma = cFirma AND Debst.Aktiv BREAK BY Debst.Preis_Grp: IF NOT FIRST-OF ( Debst.Preis_Grp ) THEN NEXT. FIND Tabel WHERE Tabel.Firma = Debst.Firma AND Tabel.RecArt = 'PREGRP' AND Tabel.CodeC = '' AND Tabel.CodeI = Debst.Preis_Grp AND Tabel.Sprcd = 1. ASSIGN Tabel.Int_2 = 1. END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ENDIF &IF DEFINED(EXCLUDE-UMNUMMERIEREN) = 0 &THEN &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE UMNUMMERIEREN Procedure PROCEDURE UMNUMMERIEREN : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEF VAR iArtnr AS INT NO-UNDO. DEF VAR iInhalt AS INT NO-UNDO. DEF VAR iJahr AS INT NO-UNDO. DEF VAR hFeld AS HANDLE NO-UNDO. DEF VAR hArtstN AS HANDLE NO-UNDO. DEF VAR hBuffer AS HANDLE NO-UNDO. DEF VAR hQuery AS HANDLE NO-UNDO. DEF VAR hTemp AS HANDLE NO-UNDO. DEF VAR hTempBuff AS HANDLE NO-UNDO. DEF VAR cWhere AS CHAR NO-UNDO. DEF VAR cFeld AS CHAR NO-UNDO. DEF VAR cDumpName AS CHAR NO-UNDO. DEF VAR cString AS CHAR NO-UNDO. DEF VAR i1 AS INT NO-UNDO. DEF VAR i2 AS INT NO-UNDO. DEF VAR iZeit AS INT NO-UNDO. DEF VAR iAnz AS INT NO-UNDO. hArtstN = TEMP-TABLE tArtstN:DEFAULT-BUFFER-HANDLE. FOR EACH tArtstN USE-INDEX tArtstN-k1 TRANSACTION: ASSIGN iArtnr = INTEGER(SUBSTRING(tArtstN.FremdNr,01,06)) iInhalt = INTEGER(SUBSTRING(tArtstN.FremdNr,07,04)) iJahr = INTEGER(SUBSTRING(tArtstN.FremdNr,11,04)). FIND Artst WHERE RECID(Artst) = tArtstN.iRecid. FOR EACH tDateien WHERE tDateien.cName <> 'Artst': iZeit = ETIME(TRUE). iAnz = 0. CREATE BUFFER hBuffer FOR TABLE tDateien.cName. CREATE QUERY hQuery. hQuery:SET-BUFFERS(hBuffer). CASE tDateien.cName: WHEN 'ArtUms' OR WHEN 'DeArUms' THEN DO: cWhere = 'FOR EACH &1 ' + 'WHERE &1.Firma = &2 ' + 'AND &1.Artnr = &3 ' + 'AND &1.Inhalt = &4 ' + 'AND &1.Jahrg = &5 '. END. OTHERWISE DO: cWhere = 'FOR EACH &1 ' + 'WHERE &1.Firma = &2 ' + 'AND &1.Artnr = &3 ' + 'AND &1.Inhalt = &4 ' + 'AND &1.Jahr = &5 '. END. END CASE. cWhere = SUBSTITUTE(cWhere, tDateien.cName, '"1000"' , iArtnr , iInhalt, iJahr ). hQuery:QUERY-PREPARE(cWhere) NO-ERROR. IF ERROR-STATUS:ERROR THEN DO: MESSAGE cWhere 'funktioniert nicht!' VIEW-AS ALERT-BOX. NEXT. END. cDumpName = tDateien.cName + '.d'. CREATE TEMP-TABLE hTemp. hTemp:CREATE-LIKE(hBuffer). hTemp:TEMP-TABLE-PREPARE("tDump"). hTempBuff = hTemp:DEFAULT-BUFFER-HANDLE. hQuery:QUERY-OPEN(). hQuery:GET-FIRST(). DO WHILE NOT hQuery:QUERY-OFF-END: iAnz = iAnz + 1. hTempBuff:BUFFER-CREATE. hTempBuff:BUFFER-COPY(hBuffer, "Artnr,Inhalt"). ASSIGN hTempBuff::Artnr = hArtstN::Artnr hTempBuff::Inhalt = hArtstN::Inhalt. CASE tDateien.cName: WHEN 'ArtUms' OR WHEN 'DeArUms' THEN ASSIGN hTempBuff::Jahrg = hArtstN::Jahr. OTHERWISE ASSIGN hTempBuff::Jahr = hArtstN::Jahr. END CASE. hQuery:GET-NEXT(). END. OUTPUT TO 'D:\Temp\Reorg.log' APPEND. PUT CONTROL 'Verarbeitet -> ' tDateien.cName ' / Zeit ' ETIME(FALSE) CHR(10). OUTPUT CLOSE. hQuery:QUERY-CLOSE(). DELETE OBJECT hQuery NO-ERROR. DELETE OBJECT hBuffer NO-ERROR. CREATE QUERY hQuery. hQuery:SET-BUFFERS(hTempBuff). hQuery:QUERY-PREPARE("FOR EACH tDump"). hQuery:QUERY-OPEN(). hQuery:GET-FIRST(NO-LOCK). OUTPUT STREAM out TO VALUE(cDumpName) APPEND NO-MAP NO-CONVERT. DO WHILE NOT hQuery:QUERY-OFF-END: cString = ''. DO i1 = 1 TO hTempBuff:NUM-FIELDS: hFeld = hTempBuff:BUFFER-FIELD(i1). IF hFeld:EXTENT = 0 THEN DO: cFeld = hFeld:BUFFER-VALUE(0). IF cFeld = ? THEN cFeld = '?'. IF hFeld:DATA-TYPE = 'character' THEN DO: cFeld = '"' + REPLACE(cFeld, '"', '""') + '"'. END. IF cString <> '' THEN cString = cString + ' '. cString = cString + cFeld. END. ELSE DO: DO i2 = 1 TO hFeld:EXTENT: cFeld = hFeld:BUFFER-VALUE(i2). IF cFeld = ? THEN cFeld = '?'. IF hFeld:DATA-TYPE = 'character' THEN DO: cFeld = '"' + REPLACE(cFeld, '"', '""') + '"'. END. IF cString <> '' THEN cString = cString + ' '. cString = cString + cFeld. END. END. END. PUT STREAM out UNFORMATTED cString SKIP. hQuery:GET-NEXT(NO-LOCK). END. OUTPUT STREAM out CLOSE. hQuery:QUERY-CLOSE(). DELETE OBJECT hTemp NO-ERROR. DELETE OBJECT hTempBuff NO-ERROR. DELETE OBJECT hQuery NO-ERROR. END. END. OUTPUT STREAM artst TO 'Artst.d' NO-MAP NO-CONVERT. FOR EACH tArtstN: EXPORT STREAM artst tArtstN EXCEPT KGeb iRecid . END. OUTPUT STREAM artst CLOSE. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ENDIF