To write a pageable map application that allows the user to update map data fields, establish a retrieval program and an update program.
Retrieval Program
The retrieval program initiates the pageable map update session and retrieves and displays the data. This program can be similar to the one displayed in How to Code a Browse Application. You should make the following changes to the retrieval program:
Note: Because of editing and error-handling considerations, updating pageable maps by using a paging type of NOWAIT is not recommended.
MAP OUT USING DCTEST01 DETAIL NEW KEY IS DBKEY.
Including the db-key in this manner allows for DB-KEY retrieval in subsequent tasks.
Update Program
The update program retrieves modified detail occurrences and updates the database. In this program, perform the following steps:
Ending the Update Session
The next task specified in the DC RETURN NEXT TASK CODE statement should include logic that tests to see if the user has indicated the end of the map paging session. If so, issue an ENDPAGE SESSION statement.
Example of an Update Application
The program excerpt below shows a pageable map update application. The program contains paging logic that works with a paging type of either WAIT or RETURN.
After determining user specifications, the program issues MAP IN DETAIL statements iteratively, modifying the database as specified, until all modified detail occurrences are processed.
DATA DIVISION WORKING-STORAGE SECTION. 01 RETURN-DBKEY PIC S9(8) COMP. 01 DEPTMOD PIC X(8) VALUE 'DEPTMOD'. 01 FIRST-PAGE-SW PIC X VALUE 'N'. 88 LESS-THAN-A-PAGE VALUE 'N'. 01 MAP-IN-ERR-SW PIC X VALUE 'N'. 88 MAP-IN-ERR VALUE 'Y'. 01 PAGE-INDICATOR. 05 SPEC-PAGE PIC S9(8) COMP. 01 MESSAGES. 05 EDIT-ERR-MESS PIC X(21) VALUE 'CORRECT INVALID INPUT'. 05 EDIT-ERR-MESS-END PIC X. * 05 EMP-NOT-FOUND-MESS PIC X(18) VALUE 'EMPLOYEE NOT FOUND'. 05 EMP-NOT-FOUND-MESS-END PIC X. 01 DC-AID-CONDITION-NAMES. 03 DC-AID-IND-V PIC X. 88 ENTER-HIT VALUE QUOTE. 88 CLEAR-HIT VALUE '_'. 88 PF01-HIT VALUE '1'. 88 PF02-HIT VALUE '2'. 88 PF03-HIT VALUE '3'. 88 PF04-HIT VALUE '4'. 88 PF05-HIT VALUE '5'. 88 PF06-HIT VALUE '6'. 88 PF07-HIT VALUE '7'. 88 PF08-HIT VALUE '8'. 88 PF09-HIT VALUE '9'. 88 PF10-HIT VALUE ':'. 88 PF11-HIT VALUE '#'. 88 PF12-HIT VALUE '@'. 88 PF13-HIT VALUE 'A'. 88 PF14-HIT VALUE 'B'. 88 PF15-HIT VALUE 'C'. 88 PF16-HIT VALUE 'D'. 88 PF17-HIT VALUE 'E'. 88 PF18-HIT VALUE 'F'. 88 PF19-HIT VALUE 'G'. 88 PF20-HIT VALUE 'H'. 88 PF21-HIT VALUE 'I'. 88 PF22-HIT VALUE '_'. 88 PF23-HIT VALUE '.'. 88 PF24-HIT VALUE '>'. 88 PA01-HIT VALUE '%'. 88 PA02-HIT VALUE '<'. 88 PA03-HIT VALUE ','. 88 PEN-ATTN-SPACE-NULL VALUE '='. 88 PEN-ATTN VALUE QUOTE. 01 MAP-WORK-REC. 05 WORK-EMP-ID PIC X(4). 05 WORK-FIRST PIC X(10). 05 WORK-LAST PIC X(15).
PROCEDURE DIVISION. BIND MAP DCTEST01. BIND MAP DCTEST01 RECORD MAP-WORK-REC. MOVE 'N' TO MAP-IN-ERR-SW. *** MAP IN HEADER AND PAGE FIELD *** MAP IN USING DCTEST01 HEADER PAGE IS SPEC-PAGE ON DC-DETAIL-NOT-FOUND NEXT SENTENCE. *** DETERMINE THE PF-KEY PRESSED *** INQUIRE MAP DCTEST01 MOVE AID TO DC-AID-IND-V. IF PA01-HIT ENDPAGE DC RETURN. *** CHECK FOR HEADER ERRORS, MAP OUT IF ANY ARE FOUND *** INQUIRE MAP DCTEST01 IF ANY EDIT IS ERROR THEN MODIFY MAP DCTEST01 TEMPORARY FOR ALL ERROR FIELDS ATTRIBUTES BRIGHT MAP OUT USING DCTEST01 RESUME DC RETURN NEXT TASK CODE DEPTMOD. * COPY IDMS SUBSCHEMA-BINDS. READY ORG-DEMO-REGION USAGE-MODE IS UPDATE. READY EMP-DEMO-REGION USAGE-MODE IS UPDATE. * PERFORM A100-MAP-IN-DETAILS THRU A100-EXIT UNTIL DC-NO-MORE-UPD-DETAILS. FINISH. *** PAGING ROUTINES FOLLOW *** *** IF ERROR SWITCH IS SET, REDISPLAY CURRENT PAGE *** IF MAP-IN-ERR THEN MAP OUT USING DCTEST01 RESUME PAGE IS CURRENT DC RETURN NEXT TASK CODE DEPTMOD. *** IF PF07, DISPLAY PRIOR PAGE *** IF PF07-HIT THEN MAP OUT USING DCTEST01 RESUME PAGE IS PRIOR DC RETURN NEXT TASK CODE DEPTMOD. .hr left right
*** IF PF08, DISPLAY NEXT PAGE *** IF PF08-HIT THEN MAP OUT USING DCTEST01 RESUME PAGE IS NEXT DC RETURN NEXT TASK CODE DEPTMOD. *** ELSE, USE PAGE VALUE FROM MAP IN HEADER *** MAP OUT USING DCTEST01 RESUME PAGE IS SPEC-PAGE. DC RETURN NEXT TASK CODE DEPTMOD. A100-MAP-IN-DETAILS. *** MAP IN EACH MODIFIED DETAIL. EXIT *** *** WHEN NO MORE MODIFIED DETAILS REMAIN *** MAP IN USING DCTEST01 DETAIL RETURNKEY IS RETURN-DBKEY ON DC-NO-MORE-UPD-DETAILS GO TO A100-EXIT. *** IF ERROR, MAP OUT DETAIL WITH MESSAGE, SET SWITCH *** INQUIRE MAP DCTEST01 IF ANY EDIT IS ERROR THEN MODIFY MAP DCTEST01 TEMPORARY FOR ALL ERROR FIELDS ATTRIBUTES BRIGHT MAP OUT USING DCTEST01 MESSAGE IS EDIT-ERR-MESS TO EDIT-ERR-MESS-END DETAIL CURRENT KEY IS RETURN-DBKEY MOVE 'Y' TO MAP-IN-ERR-SW GO TO A100-EXIT. *** RETRIEVE EMPLOYEE, USING DBKEY FROM RETURNKEY *** OBTAIN EMPLOYEE DB-KEY IS RETURN-DBKEY ON ANY-STATUS NEXT SENTENCE. *** IF ERROR, MAP OUT DETAIL WITH MESSAGE, SET SWITCH *** IF DB-REC-NOT-FOUND MAP OUT USING DCTEST01 MESSAGE IS EMP-NOT-FOUND-MESS TO EMP-NOT-FOUND-MESS-END DETAIL CURRENT KEY IS RETURN-DBKEY MOVE 'Y' TO MAP-IN-ERR-SW GO TO A100-EXIT ELSE PERFORM IDMS-STATUS. * MOVE WORK-FIRST TO EMP-FIRST-NAME-0415. MOVE WORK-LAST TO EMP-LAST-NAME-0415. MOVE WORK-EMP-ID TO EMP-ID-0415. MODIFY EMPLOYEE. A100-EXIT. EXIT.
Copyright © 2013 CA.
All rights reserved.
|
|