How to find extent is growing in variable through 4GL code?

Posted by qasimpatwekar on 22-Feb-2016 01:16

Dear All,
I just want to know if any extent is started growing into variable extent through 4 GL code? Can you please have your input on this.
Thanks in advance.
--
Qasim

All Replies

Posted by Ruben Dröge on 22-Feb-2016 02:15

Once a value has been set for an extent it can't be reset, but it is possible to define it as soon as we know what size it should be. Something like:

RUN fillExtent (INPUT 3).

RUN fillExtent (INPUT 4).

RUN fillExtent (INPUT 5).

PROCEDURE fillExtent:

DEFINE INPUT  PARAMETER iLength  AS INTEGER NO-UNDO.
DEFINE VARIABLE iExtent AS INTEGER  EXTENT NO-UNDO.
DEFINE VARIABLE iTmp AS INTEGER NO-UNDO.

ASSIGN EXTENT(iExtent) = iLength.

DO iTmp = 1 TO iLength:

   iExtent[iTmp] = iTmp.

END.

MESSAGE EXTENT(iExtent)

   VIEW-AS ALERT-BOX INFO BUTTONS OK.

END PROCEDURE.

Posted by Ruben Dröge on 22-Feb-2016 02:27
Posted by George Potemkin on 22-Feb-2016 03:22

Sample Program to monitor area usage using VST
(downloaded from amduus.com in April, ‎2005)

/* dba/reparea.p - Report on database areas

Here's a small program that gives pretty output about how much of each area is in use.
It's originally by Wim van der Ham, and had been somewhat adapted by Jurriaan Kalkman.
For licensing questions, contact Wim van der Ham on the PEG list. */ &GLOBAL-DEFINE MAXLENGTH 46 DEFINE VARIABLE dePerc AS DECIMAL NO-UNDO. DEFINE VARIABLE cPath AS CHARACTER NO-UNDO. DEFINE VARIABLE iMiddle AS INTEGER NO-UNDO. DEFINE VARIABLE iRemLeft AS INTEGER NO-UNDO. DEFINE VARIABLE iRemRght AS INTEGER NO-UNDO. DEFINE VARIABLE deBlockSize AS DECIMAL NO-UNDO. DEFINE VARIABLE deAvail AS DECIMAL NO-UNDO. DEFINE VARIABLE deUsed AS DECIMAL NO-UNDO. DEFINE VARIABLE cFileName AS CHARACTER NO-UNDO. cFileName = SUBSTITUTE("area_status_&1&2&3.txt", STRING(YEAR(TODAY), "9999"), STRING(MONTH(TODAY), "99"), STRING(DAY(TODAY), "99")). OUTPUT TO VALUE(cFileName). FILE-INFO:FILE-NAME = cFileName. FORM HEADER FILL("=", 80) FORMAT "X(80)" "Area Status Report" AT 26 FILL("-", 80) FORMAT "X(80)" "Database :" LDBNAME(1) FORMAT "X(12)" "Date:" AT 65 TODAY FORMAT "99/99/9999" SKIP "DBFile :" PDBNAME(1) FORMAT "X(50)" "Time: " AT 65 STRING(TIME, "HH:MM:SS") "Output file:" FILE-INFO:FULL-PATHNAME FORMAT "X(50)" "Page:" AT 65 PAGE-NUMBER FORMAT ">>>>>>>>>9" FILL("-", 80) FORMAT "X(80)" WITH FRAME pageHeader PAGE-TOP NO-LABELS STREAM-IO WIDTH 80 NO-BOX. FORM HEADER FILL("=", 80) FORMAT "X(80)" WITH FRAME pageFooter PAGE-BOTTOM NO-LABEL STREAM-IO WIDTH 80 NO-BOX. VIEW FRAME pageHeader. FIND FIRST _dbstatus. ASSIGN deBlockSize = _dbstatus-dbblksize . /* HIWATER REPORT */ FOR EACH _areastatus WHERE _areastatus-areanum GE 6: IF (SubStr(_areastatus-areaname, 1, 11) = "After Image") THEN NEXT. ASSIGN dePerc = ( ( _areastatus-hiwater - _areastatus-freenum) / _areastatus-totblocks ) * 100 . DISPLAY _areastatus-areanum FORMAT "z9" COLUMN-LABEL "Nr" (_areastatus-totblocks / 1000) FORMAT "zzz,zz9" COLUMN-LABEL "Total!Blocks" ( _areastatus-hiwater / 1000) FORMAT "zzz,zz9" COLUMN-LABEL "Used!Blocks" ( _areastatus-freenum / 1000) FORMAT "zzz,zz9" COLUMN-LABEL "Free!Blocks" FILL("*", INTEGER(dePerc * 38 / 100)) FORMAT "X(38)" COLUMN-LABEL "0% 25% 50% 75% 100%!| | | | |" dePerc FORMAT "zz9.99 %" COLUMN-LABEL "Full %" WITH STREAM-IO TITLE " Hiwater Percentages " WIDTH 80. END. FOR EACH _areastatus: ASSIGN deAvail = decimal(_areastatus-totblocks) * deBlockSize deUsed = decimal(_areastatus-hiwater) * deBlockSize . DISPLAY _areastatus-areanum FORMAT "z9" COLUMN-LABEL "Nr" _areastatus-areaname FORMAT "X(20)" COLUMN-LABEL "Name" deAvail FORMAT "zzz,zzz,zzz,zzz,zz9" COLUMN-LABEL "Total Size!(In Bytes)" (TOTAL) deUsed FORMAT "zzz,zzz,zzz,zzz,zz9" COLUMN-LABEL "Used Size!(In Bytes)" (TOTAL) WITH STREAM-IO TITLE " Database Size " WIDTH 80. END. /* AREA LEGEND */ FOR EACH _areastatus WHERE _areastatus-areanum GE 6: IF (SubStr(_areastatus-areaname, 1, 11) = "After Image") THEN NEXT. cPath = _areastatus-lastextent. IF LENGTH(cPath) GT {&MAXLENGTH} THEN DO: ASSIGN iMiddle = LENGTH(cPath) / 2 iRemLeft = INTEGER((LENGTH(cPath) - {&MAXLENGTH}) / 2) iRemRght = LENGTH(cPath) - {&MAXLENGTH} - iRemLeft iRemLeft = iRemLeft + 3 . cPath = SUBSTITUTE("&1&2&3", SUBSTRING(cPath, 1, iMiddle - iRemLeft), FILL(".", 3), SUBSTRING(cPath, iMiddle + iRemRght + 3)). END. DISPLAY _areastatus-areanum FORMAT "z9" COLUMN-LABEL "Nr" _areastatus-areaname FORMAT "X(20)" COLUMN-LABEL "Name" _areastatus-extents FORMAT "zz9" COLUMN-LABEL "Extents" cPath FORMAT "X({&MAXLENGTH})" COLUMN-LABEL "Currently used extent" WITH STREAM-IO TITLE " Database Areas " WIDTH 80. END. VIEW FRAME pageFooter. OUTPUT CLOSE. OS-COMMAND SILENT VALUE("start " + cFileName).

Posted by Richard Shulman on 23-Feb-2016 09:24

Hello Qasim,

I believe this is what you are looking for:

knowledgebase.progress.com/.../P165581

This is to chart for all areas when the variable extent for the area is growing.

Thank you

Posted by qasimpatwekar on 23-Feb-2016 22:48

Dear All,

Thank you very much for your assistance, it helped to fulfill my requirement.

--

Thanks,

Qasim.

This thread is closed