Really, this should be it, for the passing income.
[capital-apms-progress.git] / workflow / v-flow-step-type.w
blob161e5b7b82b03b3f4b01e763a896b996d92b0889
1 &ANALYZE-SUSPEND _VERSION-NUMBER UIB_v8r12 GUI
2 &ANALYZE-RESUME
3 /* Connected Databases
4 ttpl PROGRESS
5 */
6 &Scoped-define WINDOW-NAME CURRENT-WINDOW
7 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS V-table-Win
8 /*------------------------------------------------------------------------
10 File:
12 Description: from VIEWER.W - Template for SmartViewer Objects
14 Input Parameters:
15 <none>
17 Output Parameters:
18 <none>
20 ------------------------------------------------------------------------*/
22 CREATE WIDGET-POOL.
24 /* *************************** Definitions ************************** */
26 DEF VAR mode AS CHAR NO-UNDO.
27 DEF VAR key-name AS CHAR NO-UNDO.
28 DEF VAR key-value AS CHAR NO-UNDO INITIAL ?.
30 /* _UIB-CODE-BLOCK-END */
31 &ANALYZE-RESUME
34 &ANALYZE-SUSPEND _UIB-PREPROCESSOR-BLOCK
36 /* ******************** Preprocessor Definitions ******************** */
38 &Scoped-define PROCEDURE-TYPE SmartViewer
40 &Scoped-define ADM-SUPPORTED-LINKS Record-Source,Record-Target,TableIO-Target
42 /* Name of first Frame and/or Browse and/or first Query */
43 &Scoped-define FRAME-NAME F-Main
45 /* External Tables */
46 &Scoped-define EXTERNAL-TABLES FlowStepType
47 &Scoped-define FIRST-EXTERNAL-TABLE FlowStepType
50 /* Need to scope the external tables to this procedure */
51 DEFINE QUERY external_tables FOR FlowStepType.
52 /* Standard List Definitions */
53 &Scoped-Define ENABLED-FIELDS FlowStepType.FlowStepType ~
54 FlowStepType.Description FlowStepType.InitialPriority ~
55 FlowStepType.InitialStatus FlowStepType.WarnPeriod FlowStepType.WarnUnits
56 &Scoped-define FIELD-PAIRS~
57 ~{&FP1}FlowStepType ~{&FP2}FlowStepType ~{&FP3}~
58 ~{&FP1}Description ~{&FP2}Description ~{&FP3}~
59 ~{&FP1}InitialPriority ~{&FP2}InitialPriority ~{&FP3}~
60 ~{&FP1}InitialStatus ~{&FP2}InitialStatus ~{&FP3}~
61 ~{&FP1}WarnPeriod ~{&FP2}WarnPeriod ~{&FP3}~
62 ~{&FP1}WarnUnits ~{&FP2}WarnUnits ~{&FP3}
63 &Scoped-define ENABLED-TABLES FlowStepType
64 &Scoped-define FIRST-ENABLED-TABLE FlowStepType
65 &Scoped-Define ENABLED-OBJECTS cmb_FlowTaskType
66 &Scoped-Define DISPLAYED-FIELDS FlowStepType.FlowStepType ~
67 FlowStepType.Description FlowStepType.InitialPriority ~
68 FlowStepType.InitialStatus FlowStepType.WarnPeriod FlowStepType.WarnUnits
69 &Scoped-Define DISPLAYED-OBJECTS cmb_FlowTaskType
71 /* Custom List Definitions */
72 /* ADM-CREATE-FIELDS,ADM-ASSIGN-FIELDS,List-3,List-4,List-5,List-6 */
74 /* _UIB-PREPROCESSOR-BLOCK-END */
75 &ANALYZE-RESUME
78 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _XFTR "Foreign Keys" V-table-Win _INLINE
79 /* Actions: ? adm/support/keyedit.w ? ? ? */
80 /* STRUCTURED-DATA
81 <KEY-OBJECT>
82 THIS-PROCEDURE
83 </KEY-OBJECT>
84 <FOREIGN-KEYS>
85 FlowStepType|y|y|TTPL.FlowStepType.FlowStepType
86 </FOREIGN-KEYS>
87 <EXECUTING-CODE>
88 **************************
89 * Set attributes related to FOREIGN KEYS
91 RUN set-attribute-list (
92 'Keys-Accepted = "FlowStepType",
93 Keys-Supplied = "FlowStepType"':U).
94 /**************************
95 </EXECUTING-CODE> */
96 /* _UIB-CODE-BLOCK-END */
97 &ANALYZE-RESUME
100 /* *********************** Control Definitions ********************** */
103 /* Definitions of the field level widgets */
104 DEFINE VARIABLE cmb_FlowTaskType AS CHARACTER FORMAT "X(256)":U
105 LABEL "Task Type"
106 VIEW-AS COMBO-BOX INNER-LINES 20
107 LIST-ITEMS "Item 1"
108 SIZE 44.57 BY 1 TOOLTIP "The type of step which the rule applies against" NO-UNDO.
111 /* ************************ Frame Definitions *********************** */
113 DEFINE FRAME F-Main
114 FlowStepType.FlowStepType AT ROW 1 COL 4.72 COLON-ALIGNED
115 LABEL "Step"
116 VIEW-AS FILL-IN
117 SIZE 8.57 BY 1.05
118 cmb_FlowTaskType AT ROW 2.4 COL 8.14 COLON-ALIGNED
119 FlowStepType.Description AT ROW 3.6 COL 8.14 COLON-ALIGNED
120 VIEW-AS FILL-IN
121 SIZE 44.57 BY 1.05
122 FlowStepType.InitialPriority AT ROW 5.4 COL 12.14 COLON-ALIGNED
123 VIEW-AS FILL-IN
124 SIZE 5.14 BY 1.05
125 FlowStepType.InitialStatus AT ROW 6.45 COL 12.14 COLON-ALIGNED
126 VIEW-AS FILL-IN
127 SIZE 5.14 BY 1.05
128 FlowStepType.WarnPeriod AT ROW 7.8 COL 12.14 COLON-ALIGNED
129 LABEL "Warn"
130 VIEW-AS FILL-IN
131 SIZE 9.14 BY 1.05
132 FlowStepType.WarnUnits AT ROW 7.8 COL 23 COLON-ALIGNED NO-LABEL
133 VIEW-AS FILL-IN
134 SIZE 2.14 BY 1.05
135 "before step is due" VIEW-AS TEXT
136 SIZE 12.57 BY .65 AT ROW 8 COL 27.86
137 WITH 1 DOWN NO-BOX KEEP-TAB-ORDER OVERLAY
138 SIDE-LABELS NO-UNDERLINE THREE-D
139 AT COL 1 ROW 1 SCROLLABLE
140 FONT 10.
143 /* *********************** Procedure Settings ************************ */
145 &ANALYZE-SUSPEND _PROCEDURE-SETTINGS
146 /* Settings for THIS-PROCEDURE
147 Type: SmartViewer
148 External Tables: TTPL.FlowStepType
149 Allow: Basic,DB-Fields
150 Frames: 1
151 Add Fields to: EXTERNAL-TABLES
152 Other Settings: PERSISTENT-ONLY COMPILE
155 /* This procedure should always be RUN PERSISTENT. Report the error, */
156 /* then cleanup and return. */
157 IF NOT THIS-PROCEDURE:PERSISTENT THEN DO:
158 MESSAGE "{&FILE-NAME} should only be RUN PERSISTENT."
159 VIEW-AS ALERT-BOX ERROR BUTTONS OK.
160 RETURN.
161 END.
163 &ANALYZE-RESUME _END-PROCEDURE-SETTINGS
165 /* ************************* Create Window ************************** */
167 &ANALYZE-SUSPEND _CREATE-WINDOW
168 /* DESIGN Window definition (used by the UIB)
169 CREATE WINDOW V-table-Win ASSIGN
170 HEIGHT = 9.8
171 WIDTH = 63.43.
172 /* END WINDOW DEFINITION */
174 &ANALYZE-RESUME
177 /* *************** Runtime Attributes and UIB Settings ************** */
179 &ANALYZE-SUSPEND _RUN-TIME-ATTRIBUTES
180 /* SETTINGS FOR WINDOW V-table-Win
181 VISIBLE,,RUN-PERSISTENT */
182 /* SETTINGS FOR FRAME F-Main
183 NOT-VISIBLE Size-to-Fit */
184 ASSIGN
185 FRAME F-Main:SCROLLABLE = FALSE
186 FRAME F-Main:HIDDEN = TRUE.
188 /* SETTINGS FOR FILL-IN FlowStepType.FlowStepType IN FRAME F-Main
189 EXP-LABEL */
190 /* SETTINGS FOR FILL-IN FlowStepType.WarnPeriod IN FRAME F-Main
191 EXP-LABEL */
192 /* SETTINGS FOR FILL-IN FlowStepType.WarnUnits IN FRAME F-Main
193 EXP-LABEL */
194 /* _RUN-TIME-ATTRIBUTES-END */
195 &ANALYZE-RESUME
198 /* Setting information for Queries and Browse Widgets fields */
200 &ANALYZE-SUSPEND _QUERY-BLOCK FRAME F-Main
201 /* Query rebuild information for FRAME F-Main
202 _Options = "NO-LOCK"
203 _Query is NOT OPENED
204 */ /* FRAME F-Main */
205 &ANALYZE-RESUME
210 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _INCLUDED-LIB V-table-Win
211 /* ************************* Included-Libraries *********************** */
213 {src/adm/method/viewer.i}
214 {inc/method/m-mntvwr.i}
216 /* _UIB-CODE-BLOCK-END */
217 &ANALYZE-RESUME
222 /* ************************ Control Triggers ************************ */
224 &Scoped-define SELF-NAME cmb_FlowTaskType
225 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL cmb_FlowTaskType V-table-Win
226 ON U1 OF cmb_FlowTaskType IN FRAME F-Main /* Task Type */
228 {workflow/inc/scFwTskTyp1.i "FlowStepType" "FlowTaskType"}
229 END.
231 /* _UIB-CODE-BLOCK-END */
232 &ANALYZE-RESUME
235 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL cmb_FlowTaskType V-table-Win
236 ON U2 OF cmb_FlowTaskType IN FRAME F-Main /* Task Type */
238 {workflow/inc/scFwTskTyp2.i "FlowStepType" "FlowTaskType"}
239 END.
241 /* _UIB-CODE-BLOCK-END */
242 &ANALYZE-RESUME
245 &UNDEFINE SELF-NAME
247 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK V-table-Win
250 /* *************************** Main Block *************************** */
252 &IF DEFINED(UIB_IS_RUNNING) <> 0 &THEN
253 RUN dispatch IN THIS-PROCEDURE ('initialize':U).
254 &ENDIF
256 /************************ INTERNAL PROCEDURES ********************/
258 /* _UIB-CODE-BLOCK-END */
259 &ANALYZE-RESUME
262 /* ********************** Internal Procedures *********************** */
264 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE adm-find-using-key V-table-Win adm/support/_key-fnd.p
265 PROCEDURE adm-find-using-key :
266 /*------------------------------------------------------------------------------
267 Purpose: Finds the current record using the contents of
268 the 'Key-Name' and 'Key-Value' attributes.
269 Parameters: <none>
270 ------------------------------------------------------------------------------*/
271 DEF VAR key-value AS CHAR NO-UNDO.
272 DEF VAR row-avail-enabled AS LOGICAL NO-UNDO.
274 /* LOCK status on the find depends on FIELDS-ENABLED. */
275 RUN get-attribute ('FIELDS-ENABLED':U).
276 row-avail-enabled = (RETURN-VALUE eq 'yes':U).
277 /* Look up the current key-value. */
278 RUN get-attribute ('Key-Value':U).
279 key-value = RETURN-VALUE.
281 /* Find the current record using the current Key-Name. */
282 RUN get-attribute ('Key-Name':U).
283 CASE RETURN-VALUE:
284 WHEN 'FlowStepType':U THEN
285 {src/adm/template/find-tbl.i
286 &TABLE = FlowStepType
287 &WHERE = "WHERE FlowStepType.FlowStepType eq key-value"
289 END CASE.
291 END PROCEDURE.
293 /* _UIB-CODE-BLOCK-END */
294 &ANALYZE-RESUME
297 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE adm-row-available V-table-Win _ADM-ROW-AVAILABLE
298 PROCEDURE adm-row-available :
299 /*------------------------------------------------------------------------------
300 Purpose: Dispatched to this procedure when the Record-
301 Source has a new row available. This procedure
302 tries to get the new row (or foriegn keys) from
303 the Record-Source and process it.
304 Parameters: <none>
305 ------------------------------------------------------------------------------*/
307 /* Define variables needed by this internal procedure. */
308 {src/adm/template/row-head.i}
310 /* Create a list of all the tables that we need to get. */
311 {src/adm/template/row-list.i "FlowStepType"}
313 /* Get the record ROWID's from the RECORD-SOURCE. */
314 {src/adm/template/row-get.i}
316 /* FIND each record specified by the RECORD-SOURCE. */
317 {src/adm/template/row-find.i "FlowStepType"}
319 /* Process the newly available records (i.e. display fields,
320 open queries, and/or pass records on to any RECORD-TARGETS). */
321 {src/adm/template/row-end.i}
323 END PROCEDURE.
325 /* _UIB-CODE-BLOCK-END */
326 &ANALYZE-RESUME
329 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE cancel-changes V-table-Win
330 PROCEDURE cancel-changes :
331 /*------------------------------------------------------------------------------
332 Purpose: Quit without applying any changes
333 ------------------------------------------------------------------------------*/
334 IF mode = "Add" THEN DO TRANSACTION:
335 FIND CURRENT FlowStepType NO-ERROR.
336 IF AVAILABLE(FlowStepType) THEN DELETE FlowStepType.
337 END.
339 RUN check-modified( 'clear':U ).
341 RUN dispatch( 'exit':U ).
343 END PROCEDURE.
345 /* _UIB-CODE-BLOCK-END */
346 &ANALYZE-RESUME
349 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE confirm-changes V-table-Win
350 PROCEDURE confirm-changes :
351 /*------------------------------------------------------------------------------
352 Purpose:
353 ------------------------------------------------------------------------------*/
354 RUN verify-flow-step.
355 IF RETURN-VALUE <> "" THEN RETURN.
357 RUN dispatch( 'update-record':U ).
358 RUN notify( 'open-query,record-source':U ).
360 RUN dispatch( 'exit':U ).
362 END PROCEDURE.
364 /* _UIB-CODE-BLOCK-END */
365 &ANALYZE-RESUME
368 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE disable_UI V-table-Win _DEFAULT-DISABLE
369 PROCEDURE disable_UI :
370 /*------------------------------------------------------------------------------
371 Purpose: DISABLE the User Interface
372 Parameters: <none>
373 Notes: Here we clean-up the user-interface by deleting
374 dynamic widgets we have created and/or hide
375 frames. This procedure is usually called when
376 we are ready to "clean-up" after running.
377 ------------------------------------------------------------------------------*/
378 /* Hide all frames. */
379 HIDE FRAME F-Main.
380 IF THIS-PROCEDURE:PERSISTENT THEN DELETE PROCEDURE THIS-PROCEDURE.
381 END PROCEDURE.
383 /* _UIB-CODE-BLOCK-END */
384 &ANALYZE-RESUME
387 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE inst-initialize V-table-Win
388 PROCEDURE inst-initialize :
389 /*------------------------------------------------------------------------------
390 Purpose:
391 ------------------------------------------------------------------------------*/
393 IF mode = 'Add' THEN DO:
394 have-records = Yes.
395 CURRENT-WINDOW:TITLE = "Adding a New Workflow Step".
396 RUN dispatch( 'add-record':U ).
397 END.
398 ELSE IF mode = "Maintain" THEN
399 RUN dispatch( 'enable-fields':U ).
400 ELSE
401 RUN dispatch( 'disable-fields':U ).
403 END PROCEDURE.
405 /* _UIB-CODE-BLOCK-END */
406 &ANALYZE-RESUME
409 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE override-add-record V-table-Win
410 PROCEDURE override-add-record :
411 /*------------------------------------------------------------------------------
412 Purpose:
413 ------------------------------------------------------------------------------*/
414 DO WITH FRAME {&FRAME-NAME}:
416 FIND FlowStepType WHERE FlowTaskType = key-value
417 AND FlowStepType.FlowStepType = ? NO-LOCK NO-ERROR.
418 IF NOT AVAILABLE(FlowStepType) THEN CREATE FlowStepType.
420 ASSIGN FlowStepType.FlowTaskType = key-value
421 FlowStepType.FlowStepType = ?.
423 CURRENT-WINDOW:TITLE = "Adding a New Workflow Step".
424 RUN dispatch( 'display-fields':U ).
425 RUN dispatch( 'enable-fields':U ).
426 RUN dispatch( 'update-record':U ).
428 END.
430 END PROCEDURE.
432 /* _UIB-CODE-BLOCK-END */
433 &ANALYZE-RESUME
436 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE pre-destroy V-table-Win
437 PROCEDURE pre-destroy :
438 /*------------------------------------------------------------------------------
439 Purpose:
440 ------------------------------------------------------------------------------*/
441 IF LAST-EVENT:FUNCTION = "WINDOW-CLOSE" THEN RUN cancel-changes.
442 END PROCEDURE.
444 /* _UIB-CODE-BLOCK-END */
445 &ANALYZE-RESUME
448 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE send-key V-table-Win adm/support/_key-snd.p
449 PROCEDURE send-key :
450 /*------------------------------------------------------------------------------
451 Purpose: Sends a requested KEY value back to the calling
452 SmartObject.
453 Parameters: <see adm/template/sndkytop.i>
454 ------------------------------------------------------------------------------*/
456 /* Define variables needed by this internal procedure. */
457 {src/adm/template/sndkytop.i}
459 /* Return the key value associated with each key case. */
460 {src/adm/template/sndkycas.i "FlowStepType" "FlowStepType" "FlowStepType"}
462 /* Close the CASE statement and end the procedure. */
463 {src/adm/template/sndkyend.i}
465 END PROCEDURE.
467 /* _UIB-CODE-BLOCK-END */
468 &ANALYZE-RESUME
471 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE send-records V-table-Win _ADM-SEND-RECORDS
472 PROCEDURE send-records :
473 /*------------------------------------------------------------------------------
474 Purpose: Send record ROWID's for all tables used by
475 this file.
476 Parameters: see template/snd-head.i
477 ------------------------------------------------------------------------------*/
479 /* Define variables needed by this internal procedure. */
480 {src/adm/template/snd-head.i}
482 /* For each requested table, put it's ROWID in the output list. */
483 {src/adm/template/snd-list.i "FlowStepType"}
485 /* Deal with any unexpected table requests before closing. */
486 {src/adm/template/snd-end.i}
488 END PROCEDURE.
490 /* _UIB-CODE-BLOCK-END */
491 &ANALYZE-RESUME
494 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE state-changed V-table-Win
495 PROCEDURE state-changed :
496 /* -----------------------------------------------------------
497 Purpose:
498 Parameters: <none>
499 Notes:
500 -------------------------------------------------------------*/
501 DEFINE INPUT PARAMETER p-issuer-hdl AS HANDLE NO-UNDO.
502 DEFINE INPUT PARAMETER p-state AS CHARACTER NO-UNDO.
504 CASE p-state:
505 /* Object instance CASEs can go here to replace standard behavior
506 or add new cases. */
507 {src/adm/template/vstates.i}
508 END CASE.
509 END PROCEDURE.
511 /* _UIB-CODE-BLOCK-END */
512 &ANALYZE-RESUME
515 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE use-Key-Name V-table-Win
516 PROCEDURE use-Key-Name :
517 /*------------------------------------------------------------------------------
518 Purpose:
519 ------------------------------------------------------------------------------*/
520 DEF INPUT PARAMETER new-key-name AS CHAR NO-UNDO.
521 key-name = new-key-name.
522 END PROCEDURE.
524 /* _UIB-CODE-BLOCK-END */
525 &ANALYZE-RESUME
528 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE use-Key-Value V-table-Win
529 PROCEDURE use-Key-Value :
530 /*------------------------------------------------------------------------------
531 Purpose:
532 ------------------------------------------------------------------------------*/
533 DEF INPUT PARAMETER new-key-value AS CHAR NO-UNDO.
534 key-value = new-key-value.
535 END PROCEDURE.
537 /* _UIB-CODE-BLOCK-END */
538 &ANALYZE-RESUME
541 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE use-Mode V-table-Win
542 PROCEDURE use-Mode :
543 /*------------------------------------------------------------------------------
544 Purpose:
545 ------------------------------------------------------------------------------*/
546 DEF INPUT PARAMETER new-mode AS CHAR NO-UNDO.
547 mode = new-mode.
548 END PROCEDURE.
550 /* _UIB-CODE-BLOCK-END */
551 &ANALYZE-RESUME
554 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE verify-flow-step V-table-Win
555 PROCEDURE verify-flow-step :
556 /*------------------------------------------------------------------------------
557 Purpose:
558 ------------------------------------------------------------------------------*/
559 DEF VAR input-task-type AS CHAR NO-UNDO.
561 DO WITH FRAME {&FRAME-NAME}:
563 input-task-type = TRIM( ENTRY( 1, cmb_FlowTaskType:SCREEN-VALUE, " ") ).
564 IF input-task-type = ? OR TRIM(input-task-type) = "" THEN DO:
565 MESSAGE "You must choose a unique Flow Task code."
566 VIEW-AS ALERT-BOX ERROR TITLE "Unassigned Flow Task Code".
567 APPLY 'ENTRY':U TO FlowStepType.FlowStepType.
568 RETURN "FAIL".
569 END.
571 IF INPUT FlowStepType.FlowStepType = ? OR TRIM(INPUT FlowStepType.FlowStepType) = "" THEN DO:
572 MESSAGE "You must choose a unique Flow Step code."
573 VIEW-AS ALERT-BOX ERROR TITLE "Unassigned Flow Step Code".
574 APPLY 'ENTRY':U TO FlowStepType.FlowStepType.
575 RETURN "FAIL".
576 END.
578 DEF BUFFER OtherStep FOR FlowStepType.
579 IF ( INPUT FlowStepType.FlowStepType <> FlowStepType.FlowStepType
580 OR input-task-type <> FlowStepType.FlowTaskType )
581 AND CAN-FIND( OtherStep WHERE OtherStep.FlowStepType = INPUT FlowStepType.FlowStepType
582 AND OtherStep.FlowTaskType = input-task-type ) THEN DO:
583 MESSAGE "A Flow Step already exists with the code" INPUT FlowStepType.FlowStepType "!" SKIP
584 "for task" input-task-type SKIP(1)
585 "You must choose a unique FlowStep code."
586 VIEW-AS ALERT-BOX ERROR TITLE "Duplicate Flow Step Code".
587 APPLY 'ENTRY':U TO FlowStepType.FlowStepType.
588 RETURN "FAIL".
589 END.
591 IF TRIM(INPUT FlowStepType.Description) = "" THEN DO:
592 MESSAGE "You must supply a description for the Flow Step!"
593 VIEW-AS ALERT-BOX ERROR TITLE "Incomplete Name".
594 APPLY 'ENTRY':U TO FlowStepType.Description.
595 RETURN "FAIL".
596 END.
598 END.
600 END PROCEDURE.
602 /* _UIB-CODE-BLOCK-END */
603 &ANALYZE-RESUME