-
 Zitat von hebichel
Viel einfacher ist es doch die sleep() funktion in einen rpg-program zu benutzen.
Korrigiere mich, sollte ich falsch liegen aber ...
soweit ich weiß, kann man bei sleep() auch nur Sekunden und keine kleinere Zeiteinheit angeben!
Birgitta
-
WaitTime für alle: It work's !!!
sleep() auf der AS/400 funktioniert tatsächlich anders.
Diese Funktion ist auf jedem System anders implementiert und hängt häufig von TICKS-Parameter ab.
Auf der AS/400 ist das leider 1 Sekunde, unter Windows 1/1000-Sekunde, unter Unix/Linux (eben je nach Implementation) auch schom mal 1/60-Sekunde.
Doch hier nun für alle RPG-ILE-Freaks:
Code:
hactgrp(*caller) dftactgrp(*no) bnddir('QC2LE')
d WaitTime pr extproc('waittime')
d pMI_Time 8
d pMI_Options 5U 0 value
d WaitInterval ds 8
d WaitPart1 10U 0
d WaitPart2 10U 0
d WAIT_NORMAL c const(0)
d WAIT_MOD_AS_ENTER...
d c const(32768)
d WAIT_MOD_AS_LEAVE...
d c const(16384)
d WAIT_MPL_SET c const(8192)
d WAIT_SIGNALS c const(4096)
d WaitOptions s 5U 0 inz(WAIT_NORMAL)
d WaitFactor s 15p 5
d WaitMSeconds s 21p 0
c *entry plist
c parm WaitFactor
c
c eval WaitMSeconds = WaitFactor * 1000000
c if WaitMSeconds = *zero
c return
c endif
c
c eval WaitPart1 = %div(WaitMSeconds:1048576)
c eval WaitPart2 = %rem(WaitMSeconds:1048576) * 4096
c
c callp WaitTime(WaitInterval:WaitOptions)
c return
Das Aufsplitten des Intervals liegt in der internen Darstellung eines Zeitwertes in Microsekunden (1/1000000) in den Bits 1-56 (57-64 = *4096) müssen 0 sein.
-
Hallo,
mit usleep geht's etwas einfacher. Funktioniert genauso wie sleep, nur dass man die Delay-Zeit in Mikrosekunden angibt. Nachfolgend ein Beispiel für fast 1 Sekunde:
D uSleep PR 10I 0 ExtProc('usleep')
D 10U 0 Value
*
C CallP uSleep(999999)
Gruß,
KM
-
Ok, sleep() oder usleep() abhaengig davon wie genau man es haben moechte. Es funktioniert.
Sleep well
Gruss
Helge Bichel
-
Ich habe das mit dem USLEEP ausprobiert, das klappt auch gut.
Mir ist nicht ganz klar, wie die Zusammenhänge sind.
Wird die Funktion vom Betriebssystem zur Verfügung gestellt ?
Das Programm muss dann als Modul erstellt werden (Auswahl 15).
Beim Binden braucht USLEEP dann nicht angegeben zu werden ?!
mit WRKOBJ kann ich auch kein USLEEP finden ?
Was steckt eigentlich dahinter ?
mfg. Ludger
-
Die sleep, usleep and vile andere funktionen sind C-funktionen und werden durch
bnddir('QC2LE')
ins rpg program eingebunden.
Es ist nicht notwendig ein modul zu erstellen (PDM 15), einfach das program ganz normal mit PDM 14 kompilieren.
Gruss
Helge
-
Hallo Helge,
ich habe es probiert, es funktioniert.
Ich habe einige eigene Service-Programme und -Funktionen, sowie Module erstellt.
Wäre es ratsam, dafür eine eigene *BNDDIR einzurichten und die eigenen Service-Programm etc. dort anzubinden ?
Dann könnte ich evtl. verzichten auf eigene CLs, die das Binden jeweils durchführen. (Definition dann einfach in der H-Bestimmung.
mfg. Ludger
-
Du kannst Dein Programm ganz normal mit 14 kompilieren. Du musst es nicht als Modul erstellen. Die Prozeduren SLEEP und USLEEP sind externe Prozeduren, die vom Serviceprogramm QP0SSRV1 (Bibliothek QSYS) exportiert werden. Diese Prozeduren werden immer gefunden und Du musst dafür kein Binderverzeichnis angeben (auch nicht QC2LE). Da es sich um exportierte Prozeduren handelt, kannst Du sie auch nicht als Objekte finden.
Gruß,
KM
-
Das Service-Programm QP0SSRV1, in dem sich die Funktionen sleep und usleep (Achtung Kleinschreibung!) ist im Binderverzeichnis QUSAPIBD hinterlegt.
Das Binderverzeichnis QUSAPIBD wird von den Compileren automatisch eingebunden.
Birgitta
Similar Threads
-
By Sony in forum IBM i Hauptforum
Antworten: 27
Letzter Beitrag: 20-07-09, 21:48
-
By schatte in forum NEWSboard Programmierung
Antworten: 19
Letzter Beitrag: 10-01-07, 11:32
-
By RLPforum in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 04-01-07, 14:58
-
By kuempi von stein in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 19-07-06, 14:34
-
By bo1 in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 23-06-06, 15:00
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