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.
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).
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
Dear All,
Thank you very much for your assistance, it helped to fulfill my requirement.
--
Thanks,
Qasim.