| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380 |
- &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 ************************** */
- { super/funktionen.i }
- DEF VAR cUser AS CHAR NO-UNDO.
- DEF VAR cBenutzer AS CHAR NO-UNDO.
- DEF VAR cPasswort AS CHAR NO-UNDO.
- DEF VAR cFirma AS CHAR NO-UNDO.
- DEF VAR cLogName AS CHAR NO-UNDO.
- DEF VAR cParam AS CHAR NO-UNDO.
- DEF VAR Progname AS CHAR NO-UNDO.
- DEF VAR iJobNr AS INT NO-UNDO.
- DEF STREAM LogFile.
- /* _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
- /* ************************ Function Prototypes ********************** */
- &IF DEFINED(EXCLUDE-writeLogFile) = 0 &THEN
- &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD writeLogFile Procedure
- FUNCTION writeLogFile RETURNS LOGICAL
- ( ipText AS CHAR ) FORWARD.
- /* _UIB-CODE-BLOCK-END */
- &ANALYZE-RESUME
- &ENDIF
- /* *********************** 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 *************************** */
- DEF VAR iTime AS INT NO-UNDO.
- DEF VAR iRecId AS RECID NO-UNDO.
- DEF VAR iTrnr AS INT INIT 0 NO-UNDO.
- DEF VAR lReorg AS LOG INIT FALSE NO-UNDO.
- DEF VAR iHH AS INT NO-UNDO.
- DEF VAR cCommand AS CHAR NO-UNDO.
- DEF VAR cString AS CHAR NO-UNDO.
- DEF VAR iAnzInstanz AS INT INIT 0 NO-UNDO.
- DEF VAR iMaxInstanz AS INT INIT 1 NO-UNDO.
- DEF VAR iAnzJobs AS INT NO-UNDO.
- DEF VAR iMaxJobs AS INT INIT 4 NO-UNDO.
- DEF VAR ii AS INT NO-UNDO.
- DEF VAR jj AS INT NO-UNDO.
- Progname = 'batchdrucken'.
- iJobNr = TIME.
- cLogName = SUBSTITUTE('&1BatchDrucken.Log', SESSION:TEMP-DIR ).
- cString = 'Start mit Parameter -> ' + SESSION:PARAMETER + ' in Logfile ' + cLogName.
- DYNAMIC-FUNCTION('writeLogFile':U, cString ) NO-ERROR.
-
- DO WHILE SESSION:PARAMETER <> '':
- cBenutzer = ENTRY(1, SESSION:PARAMETER, ';') NO-ERROR.
- cPasswort = ENTRY(2, SESSION:PARAMETER, ';') NO-ERROR.
- cFirma = ENTRY(3, SESSION:PARAMETER, ';') NO-ERROR.
- LEAVE.
- END.
-
- cParam = SUBSTITUTE('&1&4&2&4&3', cBenutzer, cPasswort, cFirma, CHR(01) ).
- RUN ANMELDUNG ( cParam ).
-
- RUN REORG_ASMUTATION.
- RUN REORG_TABELLEN.
-
- iTime = ETIME(TRUE).
-
- MAIN-BLOCK:
- REPEAT:
- FIND FIRST ASMutation NO-lOCK USE-INDEX ASMutation-k2
- WHERE ASMutation.Aktiv = TRUE
- AND ASMutation.asmutation_id > iTrnr
- AND ASMutation.cStatus = ''
- AND ASMutation.MutArt <> 'MAIL' NO-ERROR.
-
- IF NOT AVAILABLE ASMutation THEN DO:
- ASSIGN iTrnr = 0.
- iAnzInstanz = 0.
- IF (ETIME(FALSE) - iTime) >= 600000 THEN PAUSE 10 NO-MESSAGE.
- ELSE PAUSE 2 NO-MESSAGE.
-
- iHH = INTEGER(SUBSTRING(STRING(TIME,'HH:MM:SS'),01,02)).
- IF iHH <> 04 AND
- iHH <> 12 THEN lReorg = FALSE.
- IF lReorg THEN NEXT MAIN-BLOCK.
-
- RUN REORG_TABELLEN.
- RUN REORG_ASMUTATION.
-
- lReorg = TRUE.
- NEXT MAIN-BLOCK.
- END.
-
- REPEAT TRANSACTION:
- IF ASMutation.MutArt <> 'ENDE' THEN LEAVE.
- FIND CURRENT ASMutation.
- DELETE ASMutation.
- LEAVE MAIN-BLOCK.
- END.
- iTime = ETIME(TRUE).
- iTrnr = ASMutation.asmutation_id.
-
- iAnzJobs = 0.
- FOR EACH ASMutation NO-LOCK
- WHERE ASMutation.Aktiv = TRUE
- AND ASMutation.cStatus = 'A'
- AND ASMutation.Datum >= TODAY - 1
- AND ASMutation.MutArt <> 'MAIL' :
- iAnzJobs = iAnzJobs + 1.
- END.
- IF iAnzJobs >= iMaxJobs THEN NEXT.
-
- IF iAnzInstanz < iMaxInstanz THEN DO:
- iAnzInstanz = iAnzInstanz + 1.
- cCommand = 'C:\windows\system32\schtasks /run /tn "DruckenAuftragsPapiere" '.
- DYNAMIC-FUNCTION('writeLogFile':U, cCommand ) NO-ERROR.
- OS-COMMAND SILENT VALUE(cCommand).
- PAUSE 2 NO-MESSAGE.
- END.
- DO WHILE iAnzJobs > 0:
- PAUSE 10 NO-MESSAGE.
- ii = 0.
- FOR EACH ASMutation NO-LOCK
- WHERE ASMutation.Aktiv = TRUE
- AND ASMutation.cStatus = 'A'
- AND ASMutation.Datum = TODAY - 1
- AND ASMutation.MutArt <> 'MAIL' :
- ii = ii + 1.
- END.
- IF ii = 0 THEN LEAVE.
- IF ii = iAnzJobs THEN jj = jj + 1.
- IF jj = 10 THEN DO: /* Immer die gleiche Anzahl aktiver Jobs = "Hängende" */
- RUN REORG_ASMUTATION.
- RUN REORG_TABELLEN.
- iAnzInstanz = iAnzInstanz - 1.
- LEAVE.
- END.
- END.
- iTrnr = 0.
- END.
-
- QUIT.
- /* _UIB-CODE-BLOCK-END */
- &ANALYZE-RESUME
- /* ********************** Internal Procedures *********************** */
- &IF DEFINED(EXCLUDE-REORG_ASMUTATION) = 0 &THEN
- &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE REORG_ASMUTATION Procedure
- PROCEDURE REORG_ASMUTATION :
- /*------------------------------------------------------------------------------
- Purpose:
- Parameters: <none>
- Notes:
- ------------------------------------------------------------------------------*/
- DEF VAR aRecid AS RECID NO-UNDO.
- DEF BUFFER bASMut FOR ASMutation.
- FOR EACH ASMutation NO-LOCK
- WHERE ASMutation.Aktiv = FALSE
- AND ASMutation.cStatus = 'E'
- AND ASMutation.Datum < (TODAY - 7) TRANSACTION:
- aRecid = RECID(ASMutation).
- FIND bASMut EXCLUSIVE-LOCK WHERE RECID(bASMut) = aRecid NO-WAIT NO-ERROR.
- IF LOCKED bASMut THEN NEXT.
- DELETE bASMut.
- END.
- FOR EACH ASMutation NO-LOCK
- WHERE ASMutation.Aktiv = TRUE
- AND ASMutation.cStatus <> ''
- AND ASMutation.Datum < (TODAY - 7) TRANSACTION:
- aRecid = RECID(ASMutation).
- FIND bASMut EXCLUSIVE-LOCK WHERE RECID(bASMut) = aRecid NO-WAIT NO-ERROR.
- IF LOCKED bASMut THEN NEXT.
- DELETE bASMut.
- END.
- FOR EACH ASMutation NO-LOCK
- WHERE ASMutation.Aktiv = TRUE
- AND ASMutation.cStatus = 'A'
- AND ASMutation.Datum >= TODAY - 1 TRANSACTION:
- aRecid = RECID(ASMutation).
- FIND bASMut EXCLUSIVE-LOCK WHERE RECID(bASMut) = aRecid NO-WAIT NO-ERROR.
- IF LOCKED bASMut THEN NEXT.
- ASSIGN bASMut.cStatus = ''.
- END.
-
- FOR EACH Tabel
- WHERE Tabel.Firma = cFirma
- AND Tabel.RecArt = 'GERUEST':
- FIND Aufko NO-LOCK
- WHERE Aufko.Firma = Tabel.Firma
- AND Aufko.Aufnr = Tabel.CodeI NO-ERROR.
- IF AVAILABLE Aufko THEN NEXT.
- DELETE Tabel.
- END.
- END PROCEDURE.
- /* _UIB-CODE-BLOCK-END */
- &ANALYZE-RESUME
- &ENDIF
- &IF DEFINED(EXCLUDE-REORG_TABELLEN) = 0 &THEN
- &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE REORG_TABELLEN Procedure
- PROCEDURE REORG_TABELLEN :
- /*------------------------------------------------------------------------------
- Purpose:
- Parameters: <none>
- Notes:
- ------------------------------------------------------------------------------*/
- DEF VAR iRecid AS RECID NO-UNDO.
- DEF VAR iAnz AS INT NO-UNDO.
-
- DEF BUFFER bRuestAuf FOR RuestAuf.
- DEF BUFFER bTabel FOR Tabel.
- iAnz = 0.
- FOR EACH RuestAuf NO-LOCK
- WHERE RuestAuf.Firma = cFirma
- AND iAnz < 100:
- FIND Aufko NO-LOCK
- WHERE Aufko.Firma = RuestAuf.Firma
- AND Aufko.Aufnr = RuestAuf.Aufnr NO-ERROR.
- IF AVAILABLE Aufko THEN NEXT.
- FIND bRuestAuf WHERE RECID(bRuestAuf) = RECID(RuestAuf).
- DELETE RuestAuf.
- iAnz = iAnz + 1.
- END.
- RELEASE bRuestAuf.
- FOR EACH Tabel NO-LOCK
- WHERE Tabel.Firma = cFirma
- AND Tabel.RecArt = 'AUFDRUCK'
- AND iAnz < 100:
- iRecid = Tabel.Int_3.
- FIND Aufko NO-LOCK WHERE RECID(Aufko) = iRecid NO-ERROR.
- IF AVAILABLE Aufko THEN NEXT.
- FIND bTabel WHERE RECID(bTabel) = RECID(Tabel).
- DELETE bTabel.
- iAnz = iAnz + 1.
- END.
- RELEASE bTabel.
- END PROCEDURE.
- /* _UIB-CODE-BLOCK-END */
- &ANALYZE-RESUME
- &ENDIF
- /* ************************ Function Implementations ***************** */
- &IF DEFINED(EXCLUDE-writeLogFile) = 0 &THEN
- &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION writeLogFile Procedure
- FUNCTION writeLogFile RETURNS LOGICAL
- ( ipText AS CHAR ) :
- /*------------------------------------------------------------------------------
- Purpose:
- Notes:
- ------------------------------------------------------------------------------*/
- DEF VAR cTime AS CHAR NO-UNDO.
- DEF VAR iHH AS INT NO-UNDO.
- DEF VAR iMM AS INT NO-UNDO.
- DEF VAR iSS AS INT NO-UNDO.
- IF ipText = '' THEN RETURN FALSE.
- /*
- OUTPUT STREAM LogFile TO VALUE(cLogName) APPEND NO-MAP NO-CONVERT.
- PUT STREAM LogFile CONTROL '--> '
- STRING(TODAY,'99.99.9999')
- ' '
- STRING(TIME ,'HH:MM:SS')
- ' -> '
- ipText
- CHR(13) CHR(10).
- OUTPUT STREAM LogFile CLOSE.
- */
- cTime = STRING(TIME,'HH:MM:SS').
- iHH = INTEGER(SUBSTRING(cTime,01,02)).
- iMM = INTEGER(SUBSTRING(cTime,04,02)).
- iSS = INTEGER(SUBSTRING(cTime,07,02)).
- REPEAT TRANSACTION:
- CREATE LogDatei.
- ASSIGN LogDatei.Firma = cFirma
- LogDatei.Log_Id = NEXT-VALUE(Log_Id)
- LogDatei.JobId = iJobNr
- LogDatei.DatumZeit = DATETIME(MONTH(TODAY), DAY(TODAY), YEAR(TODAY), iHH, iMM, iSS, 0)
- LogDatei.LogProg = Progname
- LogDatei.LogText = ipText.
- RELEASE LogDatei.
- LEAVE.
- END.
-
- RETURN TRUE.
- END FUNCTION.
- /* _UIB-CODE-BLOCK-END */
- &ANALYZE-RESUME
- &ENDIF
|