&ANALYZE-SUSPEND _VERSION-NUMBER AB_v10r12 GUI &ANALYZE-RESUME /* Connected Databases */ &Scoped-define WINDOW-NAME C-Win &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS C-Win /*------------------------------------------------------------------------ File: Description: Input Parameters: Output Parameters: Author: Created: ------------------------------------------------------------------------*/ /* This .W file was created with the Progress AppBuilder. */ /*----------------------------------------------------------------------*/ /* Create an unnamed pool to store all the widgets created by this procedure. This is a good default which assures that this procedure's triggers and internal procedures will execute in this procedure's storage, and that proper cleanup will occur on deletion of the procedure. */ CREATE WIDGET-POOL. /* *************************** Definitions ************************** */ /*--- Define Temp-Tables ----*/ DEFINE TEMP-TABLE ttDB NO-UNDO FIELD DatabaseName AS CHARACTER FIELD ConnectID AS INTEGER FIELD StartingTS AS INTEGER FIELD EndingTS AS INTEGER FIELD StartingIS AS INTEGER FIELD EndingIS AS INTEGER INDEX IdxMain IS UNIQUE DatabaseName. DEFINE TEMP-TABLE ttTable NO-UNDO FIELD DatabaseName AS CHARACTER FIELD TableNumber AS INTEGER FIELD TableName AS CHARACTER FIELD Reads AS DECIMAL FIELD Creates AS DECIMAL FIELD Updates AS DECIMAL FIELD Deletes AS DECIMAL FIELD IndexActivity AS DECIMAL FIELD TableActivity AS DECIMAL FIELD TotalActivity AS DECIMAL INDEX IdxMain IS UNIQUE DatabaseName TableNumber INDEX IdxName DatabaseName TableName. DEFINE TEMP-TABLE ttIndex NO-UNDO FIELD DatabaseName AS CHARACTER FIELD TableNumber AS INTEGER FIELD TableName AS CHARACTER FIELD IndexNumber AS INTEGER FIELD IndexName AS CHARACTER FIELD Reads AS DECIMAL FIELD Creates AS DECIMAL FIELD Deletes AS DECIMAL FIELD IndexActivity AS DECIMAL FIELD IsUnique AS LOGICAL FIELD IsWord AS LOGICAL INDEX IdxMain IS UNIQUE DatabaseName IndexNumber INDEX IdxName DatabaseName IndexName INDEX IdxTable DatabaseName TableName. DEFINE TEMP-TABLE ttSnapShot NO-UNDO FIELD SnapShotID AS INTEGER FIELD SnapShotName AS CHARACTER FIELD StartTime AS DATETIME FIELD EndTime AS DATETIME FIELD ElapsedTime AS DECIMAL FIELD IndexActivity AS DECIMAL FIELD TableActivity AS DECIMAL FIELD TotalActivity AS DECIMAL FIELD ProfiledTime AS DECIMAL FIELD PercentTime AS DECIMAL FIELD PercentActivity AS DECIMAL INDEX IdxMain IS UNIQUE SnapShotID. DEFINE TEMP-TABLE ttSnapSource NO-UNDO FIELD SnapShotID AS INTEGER FIELD SourceID AS INTEGER FIELD SourceName AS CHARACTER FIELD CallCount AS INTEGER INDEX IdxMain SnapShotID SourceID. DEFINE TEMP-TABLE ttSnapCallTree NO-UNDO FIELD SnapShotID AS INTEGER FIELD CallerSourceID AS INTEGER FIELD CallerLineNumber AS INTEGER FIELD CalleeSourceID AS INTEGER FIELD CallCount AS INTEGER INDEX IdxMain SnapShotID CalleeSourceID INDEX IdxCaller SnapShotID CallerSourceID. DEFINE TEMP-TABLE ttSnapLineSummary NO-UNDO FIELD SnapShotID AS INTEGER FIELD SourceID AS INTEGER FIELD LineNumber AS INTEGER FIELD StatementCount AS INTEGER FIELD TotalTime AS DECIMAL FIELD CumTime AS DECIMAL FIELD PercentSession AS DECIMAL FIELD PercentSnapShot AS DECIMAL INDEX IdxMain SnapShotID SourceID LineNumber INDEX IdxTime SnapShotID TotalTime DESCENDING. DEFINE TEMP-TABLE ttTableSnapShot NO-UNDO FIELD SnapShotID AS INTEGER FIELD DatabaseName AS CHARACTER FIELD TableNumber AS INTEGER FIELD Reads AS DECIMAL FIELD Creates AS DECIMAL FIELD Updates AS DECIMAL FIELD Deletes AS DECIMAL INDEX IdxMain IS UNIQUE SnapShotID DatabaseName TableNumber INDEX IdxTable DatabaseName TableNumber. DEFINE TEMP-TABLE ttIndexSnapShot NO-UNDO FIELD SnapShotID AS INTEGER FIELD DatabaseName AS CHARACTER FIELD IndexNumber AS INTEGER FIELD Reads AS DECIMAL FIELD Creates AS DECIMAL FIELD Deletes AS DECIMAL INDEX IdxMain IS UNIQUE SnapShotID DatabaseName IndexNumber INDEX IdxIndex DatabaseName IndexNumber. DEFINE TEMP-TABLE ttTableStat NO-UNDO FIELD SnapShotID AS INTEGER FIELD DatabaseName AS CHARACTER FIELD TableNumber AS INTEGER FIELD TableName AS CHARACTER FIELD Reads AS DECIMAL FIELD Creates AS DECIMAL FIELD Updates AS DECIMAL FIELD Deletes AS DECIMAL FIELD TableActivity AS DECIMAL FIELD IndexActivity AS DECIMAL FIELD TotalActivity AS DECIMAL FIELD PercentSession AS DECIMAL FIELD PercentSnapShot AS DECIMAL INDEX IdxMain IS UNIQUE SnapShotID DatabaseName TableNumber. DEFINE TEMP-TABLE ttIndexStat NO-UNDO FIELD SnapShotID AS INTEGER FIELD DatabaseName AS CHARACTER FIELD IndexNumber AS INTEGER FIELD IndexName AS CHARACTER FIELD TableNumber AS INTEGER FIELD TableName AS CHARACTER FIELD Reads AS DECIMAL FIELD Creates AS DECIMAL FIELD Deletes AS DECIMAL FIELD IndexActivity AS DECIMAL FIELD PercentSession AS DECIMAL FIELD PercentSnapShot AS DECIMAL INDEX IdxMain IS UNIQUE SnapShotID DatabaseName IndexNumber. DEFINE VARIABLE TraceFileName AS CHARACTER NO-UNDO. DEFINE VARIABLE CodeToRun AS CHARACTER NO-UNDO. DEFINE VARIABLE UseTimings AS LOGICAL NO-UNDO. DEFINE VARIABLE QuickHandle AS HANDLE NO-UNDO. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-PREPROCESSOR-BLOCK /* ******************** Preprocessor Definitions ******************** */ &Scoped-define PROCEDURE-TYPE Window &Scoped-define DB-AWARE no /* Name of designated FRAME-NAME and/or first browse and/or first query */ &Scoped-define FRAME-NAME DEFAULT-FRAME &Scoped-define BROWSE-NAME brIndexes /* Internal Tables (found by Frame, Query & Browse Queries) */ &Scoped-define INTERNAL-TABLES ttIndexStat ttIndex ttSnapShot ttTableStat ~ ttSnapLineSummary ttSnapSource /* Definitions for BROWSE brIndexes */ &Scoped-define FIELDS-IN-QUERY-brIndexes /* ttIndexStat.DatabaseName */ /* ttIndexStat.TableName */ ttIndexStat.IndexName ttIndexStat.PercentSession ttIndexStat.PercentSnapshot ttIndexStat.IndexActivity ttIndexStat.Reads ttIndexStat.Creates ttIndexStat.Deletes ttIndex.IsUnique ttIndex.IsWord &Scoped-define ENABLED-FIELDS-IN-QUERY-brIndexes &Scoped-define SELF-NAME brIndexes &Scoped-define QUERY-STRING-brIndexes FOR EACH ttIndexStat WHERE ttIndexStat.SnapShotID = ttTableStat.SnapShotID AND ttIndexStat.TableNumber = ttTableStat.TableNumber, ~ EACH ttIndex WHERE ttIndex.DatabaseName = ttIndexStat.DatabaseName AND ttIndex.IndexNumber = ttIndexStat.IndexNumber BY ttIndexStat.IndexActivity DESCENDING &Scoped-define OPEN-QUERY-brIndexes OPEN QUERY {&SELF-NAME} FOR EACH ttIndexStat WHERE ttIndexStat.SnapShotID = ttTableStat.SnapShotID AND ttIndexStat.TableNumber = ttTableStat.TableNumber, ~ EACH ttIndex WHERE ttIndex.DatabaseName = ttIndexStat.DatabaseName AND ttIndex.IndexNumber = ttIndexStat.IndexNumber BY ttIndexStat.IndexActivity DESCENDING. &Scoped-define TABLES-IN-QUERY-brIndexes ttIndexStat ttIndex &Scoped-define FIRST-TABLE-IN-QUERY-brIndexes ttIndexStat &Scoped-define SECOND-TABLE-IN-QUERY-brIndexes ttIndex /* Definitions for BROWSE brSnapshot */ &Scoped-define FIELDS-IN-QUERY-brSnapshot ttSnapShot.SnapShotName ttSnapShot.ElapsedTime ttSnapShot.ElapsedTime / 100 ttSnapShot.PercentTime ttSnapShot.PercentActivity ttSnapShot.TotalActivity ttSnapShot.TableActivity ttSnapShot.IndexActivity &Scoped-define ENABLED-FIELDS-IN-QUERY-brSnapshot &Scoped-define SELF-NAME brSnapshot &Scoped-define QUERY-STRING-brSnapshot FOR EACH ttSnapShot &Scoped-define OPEN-QUERY-brSnapshot OPEN QUERY {&SELF-NAME} FOR EACH ttSnapShot. &Scoped-define TABLES-IN-QUERY-brSnapshot ttSnapShot &Scoped-define FIRST-TABLE-IN-QUERY-brSnapshot ttSnapShot /* Definitions for BROWSE brTables */ &Scoped-define FIELDS-IN-QUERY-brTables ttTableStat.DatabaseName ttTableStat.TableName ttTableStat.PercentSession ttTableStat.PercentSnapshot ttTableStat.TotalActivity ttTableStat.TableActivity ttTableStat.IndexActivity ttTableStat.Reads ttTableStat.Creates ttTableStat.Updates ttTableStat.Deletes &Scoped-define ENABLED-FIELDS-IN-QUERY-brTables &Scoped-define SELF-NAME brTables &Scoped-define QUERY-STRING-brTables FOR EACH ttTableStat WHERE ttTableStat.SnapShotID = ttSnapShot.SnapShotID BY ttTableStat.TotalActivity DESCENDING &Scoped-define OPEN-QUERY-brTables OPEN QUERY {&SELF-NAME} FOR EACH ttTableStat WHERE ttTableStat.SnapShotID = ttSnapShot.SnapShotID BY ttTableStat.TotalActivity DESCENDING. &Scoped-define TABLES-IN-QUERY-brTables ttTableStat &Scoped-define FIRST-TABLE-IN-QUERY-brTables ttTableStat /* Definitions for BROWSE brTimings */ &Scoped-define FIELDS-IN-QUERY-brTimings ttSnapSource.SourceName ttSnapLineSummary.LineNumber ttSnapLineSummary.StatementCount ttSnapLineSummary.PercentSession ttSnapLineSummary.PercentSnapshot ttSnapLineSummary.TotalTime ttSnapLineSummary.TotalTime / ttSnapLineSummary.StatementCount &Scoped-define ENABLED-FIELDS-IN-QUERY-brTimings &Scoped-define SELF-NAME brTimings &Scoped-define QUERY-STRING-brTimings FOR EACH ttSnapLineSummary WHERE ttSnapLineSummary.SnapShotID = ttSnapShot.SnapShotID, ~ EACH ttSnapSource WHERE ttSnapSource.SnapShotID = ttSnapLineSummary.SnapShotID AND ttSnapSource.SourceID = ttSnapLineSummary.SourceID BY ttSnapLineSummary.TotalTime DESCENDING &Scoped-define OPEN-QUERY-brTimings OPEN QUERY {&SELF-NAME} FOR EACH ttSnapLineSummary WHERE ttSnapLineSummary.SnapShotID = ttSnapShot.SnapShotID, ~ EACH ttSnapSource WHERE ttSnapSource.SnapShotID = ttSnapLineSummary.SnapShotID AND ttSnapSource.SourceID = ttSnapLineSummary.SourceID BY ttSnapLineSummary.TotalTime DESCENDING. &Scoped-define TABLES-IN-QUERY-brTimings ttSnapLineSummary ttSnapSource &Scoped-define FIRST-TABLE-IN-QUERY-brTimings ttSnapLineSummary &Scoped-define SECOND-TABLE-IN-QUERY-brTimings ttSnapSource /* Definitions for FRAME DEFAULT-FRAME */ &Scoped-define OPEN-BROWSERS-IN-QUERY-DEFAULT-FRAME ~ ~{&OPEN-QUERY-brIndexes}~ ~{&OPEN-QUERY-brSnapshot}~ ~{&OPEN-QUERY-brTables}~ ~{&OPEN-QUERY-brTimings} /* Standard List Definitions */ &Scoped-Define ENABLED-OBJECTS btLoad btQuick btRunCode RECT-1 brSnapshot ~ brTimings brTables brIndexes /* Custom List Definitions */ /* List-1,List-2,List-3,List-4,List-5,List-6 */ /* _UIB-PREPROCESSOR-BLOCK-END */ &ANALYZE-RESUME /* ************************ Function Prototypes ********************** */ &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD fn_Refresh C-Win FUNCTION fn_Refresh RETURNS LOGICAL PRIVATE ( /* parameter-definitions */ ) FORWARD. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* *********************** Control Definitions ********************** */ /* Define the widget handle for the window */ DEFINE VAR C-Win AS WIDGET-HANDLE NO-UNDO. /* Menu Definitions */ DEFINE SUB-MENU m_File MENU-ITEM m_Load LABEL "&Load" RULE MENU-ITEM m_Exit LABEL "E&xit" . DEFINE SUB-MENU m_Options MENU-ITEM m_Enable_Timings LABEL "Enable Timings" TOGGLE-BOX. DEFINE MENU MENU-BAR-C-Win MENUBAR SUB-MENU m_File LABEL "&File" SUB-MENU m_Options LABEL "&Options" . /* Definitions of the field level widgets */ DEFINE BUTTON btLoad NO-FOCUS LABEL "Load File" SIZE 16 BY 1.5. DEFINE BUTTON btQuick NO-FOCUS LABEL "Quick Code" SIZE 16 BY 1.52. DEFINE BUTTON btRunCode NO-FOCUS LABEL "Run Program" SIZE 16 BY 1.5. DEFINE RECTANGLE RECT-1 EDGE-PIXELS 2 GRAPHIC-EDGE NO-FILL SIZE 189 BY 2.14. /* Query definitions */ &ANALYZE-SUSPEND DEFINE QUERY brIndexes FOR ttIndexStat, ttIndex SCROLLING. DEFINE QUERY brSnapshot FOR ttSnapShot SCROLLING. DEFINE QUERY brTables FOR ttTableStat SCROLLING. DEFINE QUERY brTimings FOR ttSnapLineSummary, ttSnapSource SCROLLING. &ANALYZE-RESUME /* Browse definitions */ DEFINE BROWSE brIndexes &ANALYZE-SUSPEND _UIB-CODE-BLOCK _DISPLAY-FIELDS brIndexes C-Win _FREEFORM QUERY brIndexes DISPLAY /* ttIndexStat.DatabaseName FORMAT "X(12)" COLUMN-LABEL "Database" */ /* ttIndexStat.TableName FORMAT "X(40)" COLUMN-LABEL "Table Name" */ ttIndexStat.IndexName FORMAT "X(40)" COLUMN-LABEL "Index Name" ttIndexStat.PercentSession FORMAT ">>9.99" COLUMN-LABEL "Percentage!of Session" ttIndexStat.PercentSnapshot FORMAT ">>9.99" COLUMN-LABEL "Percentage! of Snapshot" ttIndexStat.IndexActivity FORMAT ">,>>>,>>>,>>9" COLUMN-LABEL "Index Activity" ttIndexStat.Reads FORMAT ">,>>>,>>>,>>9" COLUMN-LABEL "Reads" ttIndexStat.Creates FORMAT ">,>>>,>>>,>>9" COLUMN-LABEL "Creates" ttIndexStat.Deletes FORMAT ">,>>>,>>>,>>9" COLUMN-LABEL "Deletes" ttIndex.IsUnique COLUMN-LABEL "Unique" ttIndex.IsWord COLUMN-LABEL "Word!Index" /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME WITH NO-ROW-MARKERS SEPARATORS SIZE 190 BY 5.14 TITLE "Index Activity" FIT-LAST-COLUMN. DEFINE BROWSE brSnapshot &ANALYZE-SUSPEND _UIB-CODE-BLOCK _DISPLAY-FIELDS brSnapshot C-Win _FREEFORM QUERY brSnapshot DISPLAY ttSnapShot.SnapShotName FORMAT "x(60)" COLUMN-LABEL "Snapshot Name" ttSnapShot.ElapsedTime FORMAT ">>>,>>>,>>9" COLUMN-LABEL "Time in ms" ttSnapShot.ElapsedTime / 100 FORMAT ">>>,>>>,>>9.9999" COLUMN-LABEL "Time in seconds" ttSnapShot.PercentTime FORMAT ">>9.99" COLUMN-LABEL "Percentage of Time" ttSnapShot.PercentActivity FORMAT ">>9.99" COLUMN-LABEL "Percentage of Activity" ttSnapShot.TotalActivity FORMAT ">>>,>>>,>>>,>>9" COLUMN-LABEL "Total Activity" ttSnapShot.TableActivity FORMAT ">>>,>>>,>>>,>>9" COLUMN-LABEL "Table Activity" ttSnapShot.IndexActivity FORMAT ">>>,>>>,>>>,>>9" COLUMN-LABEL "Index Activity" /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME WITH NO-ROW-MARKERS SEPARATORS SIZE 190 BY 5 TITLE "Session Snapshots" FIT-LAST-COLUMN. DEFINE BROWSE brTables &ANALYZE-SUSPEND _UIB-CODE-BLOCK _DISPLAY-FIELDS brTables C-Win _FREEFORM QUERY brTables DISPLAY ttTableStat.DatabaseName FORMAT "X(12)" COLUMN-LABEL "Database" ttTableStat.TableName FORMAT "X(40)" COLUMN-LABEL "Table Name" ttTableStat.PercentSession FORMAT ">>9.99" COLUMN-LABEL "Percentage!of Session" ttTableStat.PercentSnapshot FORMAT ">>9.99" COLUMN-LABEL "Percentage! of Snapshot" ttTableStat.TotalActivity FORMAT ">,>>>,>>>,>>9" COLUMN-LABEL "Total Activity" ttTableStat.TableActivity FORMAT ">,>>>,>>>,>>9" COLUMN-LABEL "Table Activity" ttTableStat.IndexActivity FORMAT ">,>>>,>>>,>>9" COLUMN-LABEL "Index Activity" ttTableStat.Reads FORMAT ">,>>>,>>>,>>9" COLUMN-LABEL "Reads" ttTableStat.Creates FORMAT ">,>>>,>>>,>>9" COLUMN-LABEL "Creates" ttTableStat.Updates FORMAT ">,>>>,>>>,>>9" COLUMN-LABEL "Updates" ttTableStat.Deletes FORMAT ">,>>>,>>>,>>9" COLUMN-LABEL "Deletes" /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME WITH NO-ROW-MARKERS SEPARATORS SIZE 190 BY 6.91 TITLE "Table Activity" FIT-LAST-COLUMN. DEFINE BROWSE brTimings &ANALYZE-SUSPEND _UIB-CODE-BLOCK _DISPLAY-FIELDS brTimings C-Win _FREEFORM QUERY brTimings DISPLAY ttSnapSource.SourceName FORMAT "X(100)" COLUMN-LABEL "Code Section" ttSnapLineSummary.LineNumber FORMAT ">>>,>>9" COLUMN-LABEL "Debug Line!Number" ttSnapLineSummary.StatementCount FORMAT ">>,>>>,>>>,>>9" COLUMN-LABEL "Execution!Count" ttSnapLineSummary.PercentSession FORMAT ">>9.99" COLUMN-LABEL "Percentage!of Session" ttSnapLineSummary.PercentSnapshot FORMAT ">>9.99" COLUMN-LABEL "Percentage! of Snapshot" ttSnapLineSummary.TotalTime FORMAT ">,>>>,>>>,>>9" COLUMN-LABEL "Time in ms" ttSnapLineSummary.TotalTime / ttSnapLineSummary.StatementCount FORMAT ">>,>>>,>>9.99999" COLUMN-LABEL "Average!Per Execution" /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME WITH NO-ROW-MARKERS SEPARATORS SIZE 190 BY 6.57 TITLE "Code Timing" FIT-LAST-COLUMN. /* ************************ Frame Definitions *********************** */ DEFINE FRAME DEFAULT-FRAME btLoad AT ROW 1.71 COL 7 WIDGET-ID 4 btQuick AT ROW 1.71 COL 47 WIDGET-ID 8 btRunCode AT ROW 1.71 COL 26 WIDGET-ID 6 brSnapshot AT ROW 4.24 COL 3.6 WIDGET-ID 200 brTimings AT ROW 9.86 COL 3.6 WIDGET-ID 500 brTables AT ROW 17.29 COL 3.6 WIDGET-ID 300 brIndexes AT ROW 24.95 COL 3.6 WIDGET-ID 400 RECT-1 AT ROW 1.48 COL 3 WIDGET-ID 2 WITH 1 DOWN NO-BOX KEEP-TAB-ORDER OVERLAY SIDE-LABELS NO-UNDERLINE THREE-D AT COL 1 ROW 1 SIZE 195 BY 29.67 WIDGET-ID 100. /* *********************** Procedure Settings ************************ */ &ANALYZE-SUSPEND _PROCEDURE-SETTINGS /* Settings for THIS-PROCEDURE Type: Window Allow: Basic,Browse,DB-Fields,Window,Query */ &ANALYZE-RESUME _END-PROCEDURE-SETTINGS /* ************************* Create Window ************************** */ &ANALYZE-SUSPEND _CREATE-WINDOW IF SESSION:DISPLAY-TYPE = "GUI":U THEN CREATE WINDOW C-Win ASSIGN HIDDEN = YES TITLE = "Session Trace" HEIGHT = 29.67 WIDTH = 195 MAX-HEIGHT = 47.52 MAX-WIDTH = 384 VIRTUAL-HEIGHT = 47.52 VIRTUAL-WIDTH = 384 RESIZE = yes SCROLL-BARS = no STATUS-AREA = no BGCOLOR = ? FGCOLOR = ? KEEP-FRAME-Z-ORDER = yes THREE-D = yes MESSAGE-AREA = no SENSITIVE = yes. ELSE {&WINDOW-NAME} = CURRENT-WINDOW. ASSIGN {&WINDOW-NAME}:MENUBAR = MENU MENU-BAR-C-Win:HANDLE. /* END WINDOW DEFINITION */ &ANALYZE-RESUME /* *********** Runtime Attributes and AppBuilder Settings *********** */ &ANALYZE-SUSPEND _RUN-TIME-ATTRIBUTES /* SETTINGS FOR FRAME DEFAULT-FRAME FRAME-NAME */ /* BROWSE-TAB brSnapshot RECT-1 DEFAULT-FRAME */ /* BROWSE-TAB brTimings brSnapshot DEFAULT-FRAME */ /* BROWSE-TAB brTables brTimings DEFAULT-FRAME */ /* BROWSE-TAB brIndexes brTables DEFAULT-FRAME */ IF SESSION:DISPLAY-TYPE = "GUI":U AND VALID-HANDLE(C-Win) THEN C-Win:HIDDEN = no. /* _RUN-TIME-ATTRIBUTES-END */ &ANALYZE-RESUME /* Setting information for Queries and Browse Widgets fields */ &ANALYZE-SUSPEND _QUERY-BLOCK BROWSE brIndexes /* Query rebuild information for BROWSE brIndexes _START_FREEFORM OPEN QUERY {&SELF-NAME} FOR EACH ttIndexStat WHERE ttIndexStat.SnapShotID = ttTableStat.SnapShotID AND ttIndexStat.TableNumber = ttTableStat.TableNumber, EACH ttIndex WHERE ttIndex.DatabaseName = ttIndexStat.DatabaseName AND ttIndex.IndexNumber = ttIndexStat.IndexNumber BY ttIndexStat.IndexActivity DESCENDING. _END_FREEFORM _Query is OPENED */ /* BROWSE brIndexes */ &ANALYZE-RESUME &ANALYZE-SUSPEND _QUERY-BLOCK BROWSE brSnapshot /* Query rebuild information for BROWSE brSnapshot _START_FREEFORM OPEN QUERY {&SELF-NAME} FOR EACH ttSnapShot. _END_FREEFORM _Query is OPENED */ /* BROWSE brSnapshot */ &ANALYZE-RESUME &ANALYZE-SUSPEND _QUERY-BLOCK BROWSE brTables /* Query rebuild information for BROWSE brTables _START_FREEFORM OPEN QUERY {&SELF-NAME} FOR EACH ttTableStat WHERE ttTableStat.SnapShotID = ttSnapShot.SnapShotID BY ttTableStat.TotalActivity DESCENDING. _END_FREEFORM _Query is OPENED */ /* BROWSE brTables */ &ANALYZE-RESUME &ANALYZE-SUSPEND _QUERY-BLOCK BROWSE brTimings /* Query rebuild information for BROWSE brTimings _START_FREEFORM OPEN QUERY {&SELF-NAME} FOR EACH ttSnapLineSummary WHERE ttSnapLineSummary.SnapShotID = ttSnapShot.SnapShotID, EACH ttSnapSource WHERE ttSnapSource.SnapShotID = ttSnapLineSummary.SnapShotID AND ttSnapSource.SourceID = ttSnapLineSummary.SourceID BY ttSnapLineSummary.TotalTime DESCENDING. _END_FREEFORM _Query is OPENED */ /* BROWSE brTimings */ &ANALYZE-RESUME /* ************************ Control Triggers ************************ */ &Scoped-define SELF-NAME C-Win &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL C-Win C-Win ON END-ERROR OF C-Win /* Session Trace */ OR ENDKEY OF {&WINDOW-NAME} ANYWHERE DO: /* This case occurs when the user presses the "Esc" key. In a persistently run window, just ignore this. If we did not, the application would exit. */ IF THIS-PROCEDURE:PERSISTENT THEN RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL C-Win C-Win ON WINDOW-CLOSE OF C-Win /* Session Trace */ DO: /* This event will close the window and terminate the procedure. */ APPLY "CLOSE":U TO THIS-PROCEDURE. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define BROWSE-NAME brSnapshot &Scoped-define SELF-NAME brSnapshot &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL brSnapshot C-Win ON VALUE-CHANGED OF brSnapshot IN FRAME DEFAULT-FRAME /* Session Snapshots */ DO: fn_Refresh(). END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define BROWSE-NAME brTables &Scoped-define SELF-NAME brTables &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL brTables C-Win ON VALUE-CHANGED OF brTables IN FRAME DEFAULT-FRAME /* Table Activity */ DO: {&OPEN-QUERY-brIndexes} END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME btLoad &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL btLoad C-Win ON CHOOSE OF btLoad IN FRAME DEFAULT-FRAME /* Load File */ DO: DEFINE VARIABLE FilePicked AS LOGICAL NO-UNDO. /*--- Choose the file ---*/ SYSTEM-DIALOG GET-FILE TraceFileName TITLE "Session Tracing Data File" FILTERS "All files (*.*)" "*.*" INITIAL-DIR "." CREATE-TEST-FILE RETURN-TO-START-DIR UPDATE FilePicked. IF FilePicked = TRUE THEN RUN LoadData IN THIS-PROCEDURE. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME btQuick &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL btQuick C-Win ON CHOOSE OF btQuick IN FRAME DEFAULT-FRAME /* Quick Code */ DO: IF VALID-HANDLE(QuickHandle) THEN RETURN. RUN QuickCode.w PERSISTENT SET QuickHandle. SUBSCRIBE PROCEDURE THIS-PROCEDURE TO "RunCode" IN QuickHandle. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME btRunCode &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL btRunCode C-Win ON CHOOSE OF btRunCode IN FRAME DEFAULT-FRAME /* Run Program */ DO: DEFINE VARIABLE FilePicked AS LOGICAL NO-UNDO. /*--- Choose the file ---*/ SYSTEM-DIALOG GET-FILE CodeToRun TITLE "Code To Run" FILTERS "Programs (*.p)" "*.p", "All files (*.*)" "*.*" INITIAL-DIR "." CREATE-TEST-FILE RETURN-TO-START-DIR UPDATE FilePicked. IF FilePicked = TRUE THEN RUN RunCode IN THIS-PROCEDURE (INPUT CodeToRun, INPUT FALSE). END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME m_Enable_Timings &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL m_Enable_Timings C-Win ON VALUE-CHANGED OF MENU-ITEM m_Enable_Timings /* Enable Timings */ DO: ASSIGN UseTimings = SELF:CHECKED. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME m_Exit &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL m_Exit C-Win ON CHOOSE OF MENU-ITEM m_Exit /* Exit */ DO: APPLY "CLOSE" TO THIS-PROCEDURE. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME m_Load &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL m_Load C-Win ON CHOOSE OF MENU-ITEM m_Load /* Load */ DO: APPLY "CHOOSE" TO btLoad IN FRAME {&FRAME-NAME}. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define BROWSE-NAME brIndexes &UNDEFINE SELF-NAME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK C-Win /* *************************** Main Block *************************** */ /* Set CURRENT-WINDOW: this will parent dialog-boxes and frames. */ ASSIGN CURRENT-WINDOW = {&WINDOW-NAME} THIS-PROCEDURE:CURRENT-WINDOW = {&WINDOW-NAME}. /* The CLOSE event can be used from inside or outside the procedure to */ /* terminate it. */ ON CLOSE OF THIS-PROCEDURE DO: DELETE PROCEDURE QuickHandle NO-ERROR. RUN disable_UI. END. /* Best default for GUI applications is... */ PAUSE 0 BEFORE-HIDE. /* Now enable the interface and wait for the exit condition. */ /* (NOTE: handle ERROR and END-KEY so cleanup code will always fire. */ MAIN-BLOCK: DO ON ERROR UNDO MAIN-BLOCK, LEAVE MAIN-BLOCK ON END-KEY UNDO MAIN-BLOCK, LEAVE MAIN-BLOCK: RUN enable_UI. IF NOT THIS-PROCEDURE:PERSISTENT THEN WAIT-FOR CLOSE OF THIS-PROCEDURE. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* ********************** Internal Procedures *********************** */ &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE disable_UI C-Win _DEFAULT-DISABLE PROCEDURE disable_UI : /*------------------------------------------------------------------------------ Purpose: DISABLE the User Interface Parameters: Notes: Here we clean-up the user-interface by deleting dynamic widgets we have created and/or hide frames. This procedure is usually called when we are ready to "clean-up" after running. ------------------------------------------------------------------------------*/ /* Delete the WINDOW we created */ IF SESSION:DISPLAY-TYPE = "GUI":U AND VALID-HANDLE(C-Win) THEN DELETE WIDGET C-Win. IF THIS-PROCEDURE:PERSISTENT THEN DELETE PROCEDURE THIS-PROCEDURE. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE enable_UI C-Win _DEFAULT-ENABLE PROCEDURE enable_UI : /*------------------------------------------------------------------------------ Purpose: ENABLE the User Interface Parameters: Notes: Here we display/view/enable the widgets in the user-interface. In addition, OPEN all queries associated with each FRAME and BROWSE. These statements here are based on the "Other Settings" section of the widget Property Sheets. ------------------------------------------------------------------------------*/ ENABLE btLoad btQuick btRunCode RECT-1 brSnapshot brTimings brTables brIndexes WITH FRAME DEFAULT-FRAME IN WINDOW C-Win. {&OPEN-BROWSERS-IN-QUERY-DEFAULT-FRAME} VIEW C-Win. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE LoadData C-Win PROCEDURE LoadData : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ /*--- Clean up ---*/ EMPTY TEMP-TABLE ttSnapShot. EMPTY TEMP-TABLE ttTableStat. EMPTY TEMP-TABLE ttIndexStat. EMPTY TEMP-TABLE ttSnapSource. EMPTY TEMP-TABLE ttSnapLineSummary. EMPTY TEMP-TABLE ttTable. EMPTY TEMP-TABLE ttIndex. /*--- Read the file ---*/ INPUT FROM VALUE(TraceFileName) NO-ECHO. /*--- Load the snapshots ---*/ REPEAT: CREATE ttSnapShot. IMPORT ttSnapShot. END. DELETE ttSnapShot. /*--- Load the tables ---*/ REPEAT: CREATE ttTableStat. IMPORT ttTableStat. END. DELETE ttTableStat. /*--- Load the indexes ---*/ REPEAT: CREATE ttIndexStat. IMPORT ttIndexStat. END. DELETE ttIndexStat. /*--- Load the program names ---*/ REPEAT: CREATE ttSnapSource. IMPORT ttSnapSource. END. DELETE ttSnapSource. /*--- Load the line summary ---*/ REPEAT: CREATE ttSnapLineSummary. IMPORT ttSnapLineSummary. END. DELETE ttSnapLineSummary. /*--- Load the tables ---*/ REPEAT: CREATE ttTable. IMPORT ttTable. END. DELETE ttTable. /*--- Load the indexes ---*/ REPEAT: CREATE ttIndex. IMPORT ttIndex. END. DELETE ttIndex. INPUT CLOSE. {&OPEN-QUERY-brSnapshot} APPLY "VALUE-CHANGED" TO brSnapshot IN FRAME {&FRAME-NAME}. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE RunCode C-Win PROCEDURE RunCode : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEFINE INPUT PARAMETER CodeToRun AS CHARACTER NO-UNDO. DEFINE INPUT PARAMETER RemoveCode AS LOGICAL NO-UNDO. /*--- Set up the tracing ---*/ SessionTrace:UseProfiler = UseTimings. /*--- Start tracing ---*/ SessionTrace:StartTracing(). /*--- Run the code ---*/ RUN VALUE(CodeToRun) NO-ERROR. /*--- Stop tracing ---*/ SessionTrace:StopTracing(). /*--- Write the out and load it ---*/ ASSIGN TraceFileName = "customrun.trc". SessionTrace:WriteText(TraceFileName). RUN LoadData IN THIS-PROCEDURE. /*--- Remove the file? ---*/ IF RemoveCode = TRUE THEN OS-DELETE VALUE(CodeToRun) NO-ERROR. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* ************************ Function Implementations ***************** */ &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION fn_Refresh C-Win FUNCTION fn_Refresh RETURNS LOGICAL PRIVATE ( /* parameter-definitions */ ) : /*------------------------------------------------------------------------------ Purpose: Notes: ------------------------------------------------------------------------------*/ DO WITH FRAME {&FRAME-NAME}: {&OPEN-QUERY-brTables} APPLY "VALUE-CHANGED" TO brTables. {&OPEN-QUERY-brTimings} END. RETURN FALSE. /* Function return value. */ END FUNCTION. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME