-
Suche Tool für Berechnung Zeitdifferenz
Guten Abend Forum,
ich muß die Differenz zwischen der aktuellen Systemzeit und der Zeit des Jobstarts berechnen (in Minuten).
Gibt es irgendein Tool, mit dem man dies von einem CL-Programm aus machen kann? Idealerweise sollte natürlich die Datumsgrenze mitberücksichtigt werden.
Ich stelle mir z.B. einen CL-Befehl vor, bei dem man die zwei Zeitpunkte (jeweils Datum und Uhrzeit) als Parameter übergibt und dann als Return-Variable die Zeitdifferenz in Minuten zurückerhält.
Falls mir jemand einen Tip geben kann, wäre ich sehr dankbar.
mfg.
Stefan
-
Hallo Stefan,
schau doch mal bei den ILE CEE APIs nach. CEEDAYS und CEESECS könnten da hilfreich sein.
Gruß
Bruno
-
Einfacher gehts mit einem ILE/RPG-Programm, 2 definierten Zeitmarken (Typ Z) und dem Befehl SUBDUR.
Siehe hierzu auch andere Beiträge.
-
Hallo Bruno und Fuerchau,
ich habe mir die Beschreibung von CEESECS angeschaut. Das wäre genau das, was ich brauche.
Aber ich fürchte das funktioniert nicht in einem CL-Programm, weil als Parameter blöderweise der Datentyp Float-8 benötigt wird.
ILERPG kommt für mich leider nicht in Frage. Mein letztes Programm habe ich in RPGIII vor 10 Jahren geschrieben. Ich habe leider kein KnowHow in ILERPG.
Gibt es nicht schon was Fertiges?
Trotzdem schönen Dank.
mfg. Stefan
[Dieser Beitrag wurde von sho1 am 04. Dezember 2002 editiert.]
-
Hier ist was "fertiges" :-)
========== START CLP =============
PGM
DCL VAR(&ZEIT1) TYPE(*CHAR) LEN(6)
DCL VAR(&ZEIT2) TYPE(*CHAR) LEN(6)
DCL VAR(&MINUTEN) TYPE(*CHAR) LEN(9)
RTVSYSVAL SYSVAL(QTIME) RTNVAR(&ZEIT1)
/* VARARBEITUNG */
RTVSYSVAL SYSVAL(QTIME) RTNVAR(&ZEIT2)
CALL PGM(TIMEDIF) PARM(&ZEIT1 &ZEIT2 &MINUTEN)
ENDPGM
========== ENDE CLP =============
========== START RPG "TIMEDIF" =============
H DECEDIT('0,') TIMFMT(*HMS) DATFMT(*EUR)
H************************************************* *******************
D VonZeit S T TimFmt(*HMS)
D BisZeit S T TimFmt(*HMS)
D Minuten S 9P 0
D VonZeitA S 6A
D BisZeitA S 6A
D MinutenA S 9A
D
D DsTime DS
D Zeit 1 8
D Std 1 2
D Sep1 3 3 INZ(':')
D Min 4 5
D Sep2 6 6 INZ(':')
D Sek 7 8
C
C *Entry PList
C Parm VonZeitA
C Parm BisZeitA
C Parm MinutenA
C
* Prüfem ob Parameter gültig sind
C 2 SubSt VonZeitA:1 Std
C 2 SubSt VonZeitA:3 Min
C 2 SubSt VonZeitA:5 Sek
C test(T) Zeit 50
C If *in50
C Clear MinutenA
C SetOn LR
C Return
C EndIf
C Move Zeit VonZeit
C
C 2 SubSt BisZeitA:1 Std
C 2 SubSt BisZeitA:3 Min
C 2 SubSt BisZeitA:5 Sek
C test(T) Zeit 50
C If *in50
C Clear MinutenA
C SetOn LR
C Return
C EndIf
C Move Zeit BisZeit
C
C
C BisZeit SubDur VonZeit Minuten:*MN
C Move Minuten MinutenA
C
C SetOn LR
========== ENDE RPG =============
Hmm, kann man nicht wirklich gut lesen. Ich kann dir aber auch gerne einen SavF oder eine Textdatei zuschicken. Mail mich einfach an.
CU
Markus
mail@m3s.de
PS: Fallst du noch kein Ile-RPG Programm erstellt hast, musst du zuerst eine neue Teldatei erstellen mit der Länge 112:
CRTSRCPF FILE(DEINELIB/QRPGLESRC) RCDLEN(112) TEXT('RPGLE-Sourcen')
[Dieser Beitrag wurde von Booley am 04. Dezember 2002 editiert.]
-
Hallo Markus,
vielen Dank für Deine Mühe. Ich habe mich allerdings nun doch mal aufgerafft und habe mich zumindest ein bischen in ILERPG-IV "reingewurstelt".
Es ist mir doch tatsächlich gelungen mein Problem zu lösen.
Nochmals recht herzlichen Dank für Euere Hilfe.
Den Code hab ich mal mit eingeblendet, vielleicht kanns nochwer auch brauchen.
Code:
* * * * BEGINN DER CL-Quelle * * * *
/*********************************************************************/
/* */
/* Prüfen, ob Abschluss-Job noch läuft. */
/* */
/* ================================================================= */
/* */
/* Quelle: RZSRC/QCLSRC */
/* Objekt: RZOBJ/CHKABSCHL *PGM CLP */
/* */
/* ================================================================= */
/* */
/* 03.12.2002 von Stefan Lang. */
/* */
/*********************************************************************/
PGM
DCL &sws *CHAR 8 /* UPSI Byte */
DCL &strdat *CHAR 6 /* Startdatum */
DCL &strdatiso *CHAR 10 /* Startdatum *ISO */
DCL &strtim *CHAR 6 /* Startzeit */
DCL &strtimiso *CHAR 15 /* Startzeit *ISO */
DCL &strstamp *CHAR 26 /* Timestamp *ISO */
DCL &actdat *CHAR 6 /* Aktuelles Datum */
DCL &actdatiso *CHAR 10 /* Aktuelles Dat.*ISO */
DCL &acttim *CHAR 6 /* Aktuelle Zeit */
DCL &acttimiso *CHAR 15 /* Aktuelle Zeit *ISO */
DCL &actstamp *CHAR 26 /* Timestamp *ISO */
DCL &maxtime *DEC (5 0) /* max. erlaubte Zeit */
/* in Minuten */
DCL &duration *DEC (5 0) /* abgelaufene Zeit */
/* in Minuten */
DCL &rc *CHAR 1 /* Return-Code */
/* 0 = OK */
/* 1 = ERROR */
DCL &abschl *CHAR 1 /* ABSCHLUSS (J/N) */
DCL &periode *CHAR 2 /* ABSCHLUSS-Periode */
/* TG = Täglich */
/* WO = Wöchentlich */
/* - - - - - Globale Fehlerfalle - - - - - - - - - - - - - - - - - - */
MONMSG CPF0000
/* - - - - - Vorgeplänkel - - - - - - - - - - - - - - - - - - - - - */
RTVSYSVAL SYSVAL(QDATE) RTNVAR(&strdat)
CVTDAT DATE(&strdat) TOVAR(&strdatiso) +
FROMFMT(*SYSVAL) TOFMT(*ISO) TOSEP(*NONE)
RTVSYSVAL SYSVAL(QTIME) RTNVAR(&strtim)
CHGVAR &strtimiso (%SST(&strtim 1 2) *CAT '.' *CAT +
%SST(&strtim 3 2) *CAT '.' *CAT +
%SST(&strtim 5 2) *CAT '.' *CAT +
'000000')
CHGVAR &strstamp (&strdatiso *CAT '-' *CAT &strtimiso)
RTVDTAARA DTAARA(ABSCHLUSS (46 2)) RTNVAR(&periode)
CHGVAR &maxtime 60 /* Default, falls <> TG/WO */
IF (&periode *EQ 'TG') CHGVAR &maxtime 30
IF (&periode *EQ 'WO') CHGVAR &maxtime 180
/* - - - - - Schleife - - - - - - - - - - - - - - - - - - - - - */
LOOP: DLYJOB DLY(60)
RTVJOBA SWS(&sws) /* EOJ, wenn SWS <> X'00000000' */
IF (&sws *NE '00000000') GOTO EXIT
RTVDTAARA DTAARA(ABSCHLUSS (1 1)) RTNVAR(&abschl)
IF (&abschl *EQ 'N') GOTO EXIT
RTVSYSVAL SYSVAL(QDATE) RTNVAR(&actdat)
CVTDAT DATE(&actdat) TOVAR(&actdatiso) +
FROMFMT(*SYSVAL) TOFMT(*ISO) TOSEP(*NONE)
RTVSYSVAL SYSVAL(QTIME) RTNVAR(&acttim)
CHGVAR &acttimiso (%SST(&acttim 1 2) *CAT '.' *CAT +
%SST(&acttim 3 2) *CAT '.' *CAT +
%SST(&acttim 5 2) *CAT '.' *CAT +
'000000')
CHGVAR &actstamp (&actdatiso *CAT '-' *CAT &acttimiso)
CALL CLCTIMDIF (&strstamp &actstamp &duration &rc)
IF (&rc *NE '0') DO
SNDMSG +
MSG('Achtung: Im Programm CHKABSCHL ist ein +
Fehler aufgetreten. Programm wird +
beendet. Details siehe Joblog.') +
TOUSR(*SYSOPR)
CHGJOB LOG(4 00 *SECLVL) LOGCLPGM(*YES)
DSPJOBLOG OUTPUT(*PRINT)
GOTO EXIT
ENDDO
IF (&maxtime > &duration) GOTO LOOP
EXIT: ENDPGM
* * * * BEGINN DER RPGLE-Quelle * * * *
*********************************************************************
* *
* ----------------------------------------------------------------- *
* *
* Berechnen der Zeitdifferenz (in Minuten) zwischen zwei Timestamps *
* *
* ----------------------------------------------------------------- *
* *
* *
* Programm . . . . . . . . : CLCTIMDIF *
* Bibliothek . . . . . . : RZOBJ *
* *
* Quellendatei . . . . . . : QRPGLESRC *
* Bibliothek . . . . . . : RZSRC *
* Quellenteildatei . . . . : CLCTIMDIF *
* *
* Autor . . . . . . . . . : Stefan Lang *
* Erstelldatum . . . . . . : 04.12.2002 *
* Version . . . . . . . . : V4R5M0 *
* *
* *
* ----------------------------------------------------------------- *
* *
* INPUT *
* *
* FR#TimeStamp 26Z - Von (yyyy-mm-dd-hh.mm.ss.mmmmmm) *ISO *
* TO#TimeStamp 26Z - Nach (yyyy-mm-dd-hh.mm.ss.mmmmmm) *ISO *
* *
* OUTPUT *
* *
* RV#Duration 5P 0 - Dauer in Minuten *
* RV#RetCde 1A - Return-Code (0 = kein Fehler, 1 = Fehler) *
* *
* *
*********************************************************************
*
HDatEdit(*DMY)
HDatFmt(*EUR)
HDebug(*Yes)
HDecEdit('0,')
HExprOpts(*MaxDigits)
HOption(*ShowCpy : *NoDebugIO : *SrcStmt)
HTimFmt(*HMS)
*
DFR#TimeStamp S Z
DTO#TimeStamp S Z
*
DRV#Duration S 5P 0
DRV#RetCde S 1A
*
C *Entry PList
C Parm FR#TimeStamp
C Parm TO#TimeStamp
C Parm RV#Duration
C Parm RV#RetCde
*
C Eval RV#Duration = 0
C Eval RV#RetCde = '0'
*
C Do
*
C Test FR#TimeStamp RT
C Test TO#TimeStamp RT
*
C If *InRT = *On
C Eval RV#RetCde = '1'
C Leave
C EndIf
*
C TO#TimeStamp SubDur FR#TimeStamp #Dur:*MN 5 0
C Z-Add #Dur RV#Duration
*
C EndDo
*
C Eval *InLR = *On
Similar Threads
-
By Dominik_Meyer in forum NEWSboard Server Software
Antworten: 0
Letzter Beitrag: 24-11-06, 07:06
-
By takeoff/400 in forum NEWSboard Server & Hardware Markt
Antworten: 2
Letzter Beitrag: 31-07-06, 18:17
-
By kuempi von stein in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 19-07-06, 14:34
-
By Burkhard in forum IBM i Hauptforum
Antworten: 14
Letzter Beitrag: 19-05-06, 17:06
-
By Peet in forum NEWSboard Server & Hardware Markt
Antworten: 2
Letzter Beitrag: 02-05-06, 08:08
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks