∴   Állapotjelzés a programban

             ProgressBar

2014.06.23. 20:35

Az alábbiakban bemutatásra kerülő grafikai elemet felhasználói kérésre készítettem. Néha előfordul, hogy akár több tízezer rekordot kell interaktívan feldolgozni, és ilyenkor a felhasználó nem sok mindent lát a folyamat állapotáról. Ennek ellensúlyozására építettem be az egyik programba a folyamat kijelzését.

A folyamatkijelzéshez az eredeti program két programot fog meghívni, egyik a feldolgozandó rekordok számát adja vissza, a másik pedig a tényleges kijelzést fogja megvalósítani. A rekordszámot meghatározó programról már egy korábbi blogbejegyzésről írtam, ezért ezzel most nem foglalkoznék (az itt használt TKSQFFE1 program  forrása itt található). A másik program Martin Rowe munkája, forrását itt találjátok.

Nézzük is, hogy mire van szükségünk, hogy egy adott programba mindezt működésre bírjuk.

H OPTION(*SRCSTMT:*NODEBUGIO)
...
D  P#COUNT        S             10  0
D OnePercent      S             11  2                         
D P_Marker        S              1    INZ('#')                
D P_Percent       S              3  0                         
D P_Text          S             20    INZ('Fájl feldolgozás: ')
D RcdsRead        S              9  0                         
D Remainder       S              9  0                         
 * színek a kijelzőhöz
D Green           C                   CONST(X'21')
D White           C                   CONST(X'23')
D Red             C                   CONST(X'29')
D Turqoise        C                   CONST(X'31')
D Yellow          C                   CONST(X'33')
D Pink            C                   CONST(X'39')
D Blue            C                   CONST(X'3B')            
...

 * a program elején meg kell határozni a feldolgozandó rekordok számát
 * itt most egy év- és hónap számot használunk erre
 * P#COUNT-ban lesz a visszaadott érték
C                   EVAL      P#COUNT= 0           
C* bejövő           EVAL      P#EVSZ               
C*  paraméterek     EVAL      P#HOSZ               
C                   CALL      'TKSQFFE1'    PY3RES1
...

 * 1 % kiszámítása, a kijelző pedig legyen piros
C                   EVAL      OnePercent = P#COUNT / 100
C                   EVAL      P_MARKER = Red  
...

 * !!!  A feldolgozás nyilván egy ciklusban fog történni, oda kell
 *      bemásolni az alábbi részt:
 *
 * Itt követjük nyomon, hogy hol tartunk a fájl viszgált részében
C                   EVAL      RcdsRead = RcdsRead + 1           
C     RcdsRead      DIV       OnePercent    P_Percent           
C                   MVR                     Remainder           
 * Ha nőtt a százalék akkor írja ki az újat                     
C                   IF        Remainder = 0                     
C                   CALL      'DBG202R4'   
C                   PARM                    P_Percent
C                   PARM                    P_Text  
C                   PARM                    P_Marker
C                   ENDIF      
...

 * a TKSQFFE1 program paraméterei
C     PY3RES1       PLIST                         
C                   PARM                    P#COUNT
C                   PARM                    P#EVSZ
C                   PARM                    P#HOSZ
...


 

A bejegyzés trackback címe:

https://as400programozas.blog.hu/api/trackback/id/tr106404849

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

zummazumm 2014.08.06. 16:22:28

Egy-két esetben tudom használni, köszi!

Erdős Tibor 2014.08.08. 15:27:29

@zummazumm: Én már használtam, hasznos dolog, főleg ha tényleg nagy mennyiségű adattal dolgozol.
süti beállítások módosítása