Você está na página 1de 17

The specifications for the customer maintenance program:

Program STSLISTA
Trans-id WXBB
Overview Maintaining customer information in the master file by
allowing the user to enter new customers, change
existing customers, or delete existing customers.
Input/output Spec CIUAFF1 Master Customer file.
STSACT7 – Customer maintenance key map
STSEMP7 - Customer maintenance data map
Processing specs
Control is transferred to this program via
XCTL from the menu program STSMENUA with no
communication area. The user can start the
program by entering the trans-id WXBB. In
either case, the program should respond by
displaying the key map.

On the key map, the user enters a customer


number and selects a processing action (Add,
Change, or Delete). Both the action field and
the customer number field must be entered. If
the user selects Add, the customer number
entered must not exist in the file. For Change
or Delete, the customer number must exist in
the file. If a valid combination is not
entered, an error message should be displayed.

If the user enters a valid combination of


action and customer number, the program
displays the customer data map.

• For an add operation, the user can then


enter the customer information.

• For a change operation, the user can


change any of the existing information.

• For a delete operation, all fields should


be set protected so the user cannot enter
changes.

To complete any of these above operations, the


user must press the Enter key.

For an add or change, edit/validate the fields


to make sure they are not blanks and so on.

If the user presses PF3 from either the key


map or data map, return to the menu program
STSMENUA. If the user presses PF12 from the key
map, return to the menu program. However, if
the user presses PF12 from the data map,
File Maintenance with TSQ Page 1 of 17
redisplay the key map without completing the
operation.

For a change or delete operation, maintain an


image of the customer record in either the
communication area or TSQ between program
executions. If the record is changed in any
way between program executions, notify the
user and do not complete the operation.

If an unrecoverable error occurs, terminate


the program by invoking the SYSERR subprogram
with an XCTL command.

File Maintenance with TSQ Page 2 of 17


An event/response chart for the customer maintenance program

Event Context Response New Context


Start the N/A Display the key map Get key
program
PF3 All Transfer control to the N/A
menu program
PF12 Get Key Transfer control to the Get Key
menu program
Add Cancel the operation and Get Key
Customer display the key map
Change Cancel the operation and Get Key
Customer display the key map
Delete Cancel the operation and Get Key
customer display the key map
Enter key Get Key Edit input data
If valid
Display data map Add Customer
Change Customer
Delete Customer
Else
Display error message Get key
Add Edit input data
Customer If valid
Add customer record
Display key map Get key
Else

Display error message Add customer


Change Edit input data
Customer If valid
Change customer record
Display key map Get key
Else

Display error message Change customer


Delete Delete the customer Get key
Customer record.
Display the key map
Clear Get key Redisplay the key map Unchanged
without any data
Add, Redisplay the data map Unchanged
Change, or with unprotected data
delete erased.
customer
Any PA All Ignore the key. Unchanged
key
Any other All Display an appropriate Unchanged
AID key error message

File Maintenance with TSQ Page 3 of 17


The customer maintenance program must manage four events. Whenever
the key map is displayed on the screen, the “Get key” context is
current. Whenever the data map is displayed, the context is “Add
customer,” “Change customer,” or “Delete customer,” depending on
the action the user requested on the key map.

File Maintenance with TSQ Page 4 of 17


File Maintenance with TSQ Page 5 of 17
File Maintenance with TSQ

000100 IDENTIFICATION DIVISION.


000200 PROGRAM-ID. STSLISTB.
000300*
000400 ENVIRONMENT DIVISION.
000500*
000600 DATA DIVISION.
000700*
000800 WORKING-STORAGE SECTION.
000900*
001000 01 WS-SWITCHES.
001100 05 VALID-DATA-SW PIC X(01) VALUE 'Y'.
001200 88 VALID-DATA VALUE 'Y'.
001300*
001400 01 WS-FLAGS.
001500 05 SEND-FLAG PIC X(01).
001510 88 SEND-ERASE VALUE '1'.
001520 88 SEND-ERASE-ALARM VALUE '2'.
001530 88 SEND-DATAONLY VALUE '3'.
001540 88 SEND-DATAONLY-ALARM VALUE '4'.
001600*
001610 01 WS-WORK-FIELDS.
001620 05 RESPONSE-CODE PIC S9(08) COMP.
001700*
001710 01 WS-USER-INSTRUCTIONS.
001720 05 ADD-INSTRUCTION PIC X(79) VALUE
001800 'TYPE INFORMATION FOR NEW CUSTOMER. THEN PRESS ENTER.'.
001810 05 CHANGE-INSTRUCTION PIC X(79) VALUE
001820 'TYPE CHANGES. THEN PRESS ENTER.'.
001830 05 DELETE-INSTRUCTION PIC X(79) VALUE
001840 'PRESS ENTER TO DELETE THIS CUSTOMER OR PRESS F12 TO CANCE
001900- 'L.'.
002000*
002010 01 WS-COMM-AREA.
002020 05 CA-CONTEXT-FLAG PIC X(01).
002100 88 PROCESS-KEY-MAP VALUE '1'.
002110 88 PROCESS-ADD-CUSTOMER VALUE '2'.
002120 88 PROCESS-CHANGE-CUSTOMER VALUE '3'.
002130 88 PROCESS-DELETE-CUSTOMER VALUE '4'.
002200 05 CA-CUSTOMER-RECORD.
002210 10 CA-CUSTOMER-NUMBER PIC X(06).
002220*
002230 01 CUSTOMER-MASTER-RECORD.
002231 05 CM-CUSTOMER-NUMBER PIC X(06).
002232 05 CM-FIRST-NAME PIC X(20).
002233 05 CM-LAST-NAME PIC X(30).
002234 05 CM-ADDRESS PIC X(30).
002235 05 CM-CITY PIC X(20).
002236 05 CM-STATE PIC X(02).
002237 05 CM-ZIP-CODE PIC X(10).
002240*
002241*
002242 01 TEMPORARY-STORAGE-FIELDS.
002243 05 TS-QUEUE-NAME.
002244 10 TS-TERMINAL-ID PIC X(04).
002245 10 FILLER PIC X(04) VALUE 'WXBA'.
002246 05 TS-ITEM-NUMBER PIC S9(04) COMP VALUE +1.
002247 05 TS-CUSTOMER-RECORD.

File Maintenance with TSQ Page 6 of 17


002248 10 TS-CUSTOMER-NUMBER PIC X(06).
002249 10 FILLER PIC X(112).
002250*
002251*COPY ERRPARM.
002260 01 ERROR-PARAMETERS.
002261 05 ERR-RESP PIC S9(08) COMP.
002262 05 ERR-RESP2 PIC S9(08) COMP.
002263 05 ERR-TRNID PIC X(04).
002264 05 ERR-RSRCE PIC X(08).
002265*
002266 COPY STSACT7.
002267 COPY STSEMP7.
002268*
002270 COPY DFHAID.
002280*
002300 COPY DFHBMSCA.
002400*
002500 LINKAGE SECTION.
002600*
002700 01 DFHCOMMAREA PIC X(07).
002800*
002900 PROCEDURE DIVISION.
003000*
003100 0000-PROCESS-CUSTOMER-MAINT.
003200*
003300 IF EIBCALEN > ZERO
003400 MOVE DFHCOMMAREA TO WS-COMM-AREA
003500 END-IF.
003600*
003640 MOVE EIBTRMID TO TS-TERMINAL-ID.
003650*
003700 EVALUATE TRUE
003800 WHEN EIBCALEN = ZERO
003810 MOVE LOW-VALUE TO TS-CUSTOMER-RECORD
003811 EXEC CICS
003812 WRITEQ TS
003813 QUEUE(TS-QUEUE-NAME)
003814 FROM(TS-CUSTOMER-RECORD)
003815 END-EXEC
003816 MOVE LOW-VALUE TO STSACT7O
003817 SET SEND-ERASE TO TRUE
003818 MOVE -1 TO CUSTNO1L
003819 SET PROCESS-KEY-MAP TO TRUE
003820 PERFORM 1500-SEND-KEY-MAP
003821*
003822 WHEN EIBAID = DFHPF3
003823 EXEC CICS
003830 DELETEQ TS
003840 QUEUE(TS-QUEUE-NAME)
003850 END-EXEC
003851 EXEC CICS
003852 XCTL
003853 PROGRAM('STSMENU')
003854 RESP(RESPONSE-CODE)
003855 END-EXEC
003856 IF RESPONSE-CODE NOT = DFHRESP(NORMAL)
003857 PERFORM 9999-TERMINATE-PROGRAM
003858 END-IF
003860*
003861 WHEN EIBAID = DFHPF12
003862 IF PROCESS-KEY-MAP
003863 EXEC CICS
003864 DELETEQ TS
File Maintenance with TSQ Page 7 of 17
003865 QUEUE(TS-QUEUE-NAME)
003866 END-EXEC
003867 EXEC CICS
003868 XCTL
003869 PROGRAM('STSMENUA')
003870 END-EXEC
003871 ELSE
003872 MOVE LOW-VALUE TO STSACT7O
003873 SET SEND-ERASE TO TRUE
003874 MOVE -1 TO CUSTNO1L
003875 SET PROCESS-KEY-MAP TO TRUE
003876 PERFORM 1500-SEND-KEY-MAP
003877 END-IF
003878*
003879 WHEN EIBAID = DFHCLEAR OR DFHPF5
003880 IF PROCESS-KEY-MAP
003881 MOVE LOW-VALUE TO STSACT7O
003882 SET SEND-ERASE TO TRUE
003883 MOVE -1 TO CUSTNO1L
003884 PERFORM 1500-SEND-KEY-MAP
003886 ELSE
003887 MOVE LOW-VALUE TO STSEMP7O
003888 MOVE CA-CUSTOMER-NUMBER TO CUSTNO2O
003889 EVALUATE TRUE
003890 WHEN PROCESS-ADD-CUSTOMER
003891 MOVE ADD-INSTRUCTION TO INSTR2O
003892 WHEN PROCESS-CHANGE-CUSTOMER
003893 MOVE CHANGE-INSTRUCTION TO INSTR2O
003894 WHEN PROCESS-DELETE-CUSTOMER
003895 MOVE DELETE-INSTRUCTION TO INSTR2O
003896 END-EVALUATE
003897 SET SEND-ERASE TO TRUE
003898 MOVE -1 TO LNAMEL
003900 PERFORM 1400-SEND-DATA-MAP
003901 END-IF
003902*
003903 WHEN EIBAID = DFHPA1 OR DFHPA2 OR DFHPA3
003904 CONTINUE
003905*
003906 WHEN EIBAID = DFHENTER
003915 EVALUATE TRUE
003916 WHEN PROCESS-KEY-MAP
003917 PERFORM 1000-PROCESS-KEY-MAP
003919 WHEN PROCESS-ADD-CUSTOMER
003920 PERFORM 2000-PROCESS-ADD-CUSTOMER
003922 WHEN PROCESS-CHANGE-CUSTOMER
003923 PERFORM 3000-PROCESS-CHANGE-CUSTOMER
003925 WHEN PROCESS-DELETE-CUSTOMER
003926 PERFORM 4000-PROCESS-DELETE-CUSTOMER
003927 END-EVALUATE
003930*
003940 WHEN OTHER
003950 IF PROCESS-KEY-MAP
003960 MOVE LOW-VALUE TO STSACT7O
003961 MOVE 'INVALID ATTENTION KEY PRESSED.' TO MSG1O
003970 SET SEND-DATAONLY-ALARM TO TRUE
003980 MOVE -1 TO CUSTNO1L
003991 PERFORM 1500-SEND-KEY-MAP
003992 ELSE
003993 MOVE LOW-VALUE TO STSEMP7O
003994 MOVE 'INVALID ATTENTION KEY PRESSED.' TO MSG2O
003995 SET SEND-DATAONLY-ALARM TO TRUE
003996 MOVE -1 TO LNAMEL
File Maintenance with TSQ Page 8 of 17
003997 PERFORM 1400-SEND-DATA-MAP
003998 END-IF
003999*
004000 END-EVALUATE.
004010*
004100 EXEC CICS
004200 RETURN
004300 TRANSID('WXBB')
004400 COMMAREA(WS-COMM-AREA)
004500 END-EXEC.
004600*
004700 1000-PROCESS-KEY-MAP.
004800 PERFORM 1100-RECEIVE-KEY-MAP.
004900 PERFORM 1200-EDIT-KEY-DATA.
005000 IF VALID-DATA
005010* IF NOT PROCESS-DELETE-CUSTOMER
005020* INSPECT CUSTOMER-MASTER-RECORD
005030* REPLACING ALL SPACE BY '_'
005040* END-IF
005100 MOVE CUSTNO1I TO CUSTNO2O
005110 MOVE CM-LAST-NAME TO LNAMEO
005120 MOVE CM-FIRST-NAME TO FNAMEO
005130 MOVE CM-ADDRESS TO ADDRO
005140 MOVE CM-CITY TO CITYO
005150 MOVE CM-STATE TO STATEO
005160 MOVE CM-ZIP-CODE TO ZIPCODEO
005170 MOVE -1 TO LNAMEL
005200 SET SEND-ERASE TO TRUE
005300 PERFORM 1400-SEND-DATA-MAP
005400 ELSE
005410 MOVE LOW-VALUE TO CUSTNO1O, ACTIONO
005420 SET SEND-DATAONLY-ALARM TO TRUE
005430 PERFORM 1500-SEND-KEY-MAP
005500 END-IF.
005600*
005700 1100-RECEIVE-KEY-MAP.
005800 EXEC CICS
005900 RECEIVE
006000 MAPSET('STSACT7')
006100 MAP('STSACT7')
006200 INTO(STSACT7I)
006300 END-EXEC.
006310* INSPECT STSACT7I REPLACING ALL '_' BY SPACE.
006400*
006500 1200-EDIT-KEY-DATA.
006600 IF ACTIONI NOT = '1' AND '2' AND '3'
006700* MOVE ATTR-REVERSE TO ACTIONH
006710 MOVE -1 TO ACTIONL
006800 MOVE 'ACTION MUST BE 1, 2, OR 3.' TO MSG1O
006900 MOVE 'N' TO VALID-DATA-SW
007000 END-IF.
007100*
007200 IF CUSTNO1L = ZERO OR CUSTNO1I = SPACE
007300* MOVE ATTR-REVERSE TO CUSTNO1H
007310 MOVE -1 TO CUSTNO1L
007320 MOVE 'YOU MUST ENTER A CUSTOMER NUMBER.' TO MSG1O
007330 MOVE 'N' TO VALID-DATA-SW
007340 END-IF.
007350*
007400 IF VALID-DATA
007500 MOVE LOW-VALUE TO STSEMP7O
007600 EVALUATE ACTIONI
007610 WHEN '1'
File Maintenance with TSQ Page 9 of 17
007620 PERFORM 1300-READ-CUSTOMER-RECORD
007630 IF RESPONSE-CODE = DFHRESP(NOTFND)
007631 MOVE CM-CUSTOMER-NUMBER TO CA-CUSTOMER-NUMBER
007640 MOVE ADD-INSTRUCTION TO INSTR2O
007650 SET PROCESS-ADD-CUSTOMER TO TRUE
007660 MOVE SPACE TO CUSTOMER-MASTER-RECORD
007670 ELSE
007671 IF RESPONSE-CODE = DFHRESP(NORMAL)
007680 MOVE 'THAT CUSTOMER ALREADY EXISTS'
007681 TO MSG1O
007691 MOVE 'N' TO VALID-DATA-SW
007692 END-IF
007693 END-IF
007694 WHEN '2'
007695 PERFORM 1300-READ-CUSTOMER-RECORD
007696 IF RESPONSE-CODE = DFHRESP(NORMAL)
007697 MOVE CM-CUSTOMER-NUMBER TO CA-CUSTOMER-NUMBER
007698 MOVE CUSTOMER-MASTER-RECORD
007699 TO CA-CUSTOMER-RECORD
007700 MOVE CHANGE-INSTRUCTION TO INSTR2O
007701 SET PROCESS-CHANGE-CUSTOMER TO TRUE
007702 ELSE
007703 IF RESPONSE-CODE = DFHRESP(NOTFND)
007704 MOVE 'THAT CUSTOMER DOES NOT EXISTS'
007705 TO MSG1O
007706 MOVE 'N' TO VALID-DATA-SW
007707 END-IF
007708 END-IF
007709 WHEN '3'
007710 PERFORM 1300-READ-CUSTOMER-RECORD
007711 IF RESPONSE-CODE = DFHRESP(NORMAL)
007712 MOVE CM-CUSTOMER-NUMBER TO CA-CUSTOMER-NUMBER
007713 MOVE CUSTOMER-MASTER-RECORD
007714 TO CA-CUSTOMER-RECORD
007715 MOVE DELETE-INSTRUCTION TO INSTR2O
007716 SET PROCESS-DELETE-CUSTOMER TO TRUE
007717* MOVE ATTR-PROT TO LNAMEA,
007718* FNAMEA,
007719* ADDRA,
007720* CITYA,
007721* STATEA,
007722* ZIPCODE
007723 ELSE
007724 IF RESPONSE-CODE = DFHRESP(NOTFND)
007725 MOVE 'THAT CUSTOMER DOES NOT EXISTS'
007726 TO MSG1O
007727 MOVE 'N' TO VALID-DATA-SW
007728 END-IF
007729 END-IF
007730 END-EVALUATE.
007800*
007900 1300-READ-CUSTOMER-RECORD.
008000*
008100 EXEC CICS
008200 READ
008300 FILE('CIUAFF1')
008400 RIDFLD(CUSTNO1I)
008410 INTO(CUSTOMER-MASTER-RECORD)
008420 RESP(RESPONSE-CODE)
008430 END-EXEC.
008440 IF RESPONSE-CODE NOT = DFHRESP(NORMAL)
008450 AND RESPONSE-CODE NOT = DFHRESP(NOTFND)
008460 PERFORM 9999-TERMINATE-PROGRAM
File Maintenance with TSQ Page 10 of 17
008470 END-IF.
008480*
008490 IF RESPONSE-CODE = DFHRESP(NORMAL)
008491 MOVE CUSTOMER-MASTER-RECORD TO TS-CUSTOMER-RECORD
008492 EXEC CICS
008493 WRITEQ TS
008494 QUEUE(TS-QUEUE-NAME)
008495 FROM(TS-CUSTOMER-RECORD)
008496 ITEM(TS-ITEM-NUMBER)
008497 REWRITE
008498 END-EXEC
008499 END-IF.
008500*
008510 1400-SEND-DATA-MAP.
008600*
008700 MOVE 'WXBA' TO TRANID2O.
008800*
008900 EVALUATE TRUE
009000 WHEN SEND-ERASE
009100 EXEC CICS
009200 SEND
009300 MAPSET('STSEMP7')
009400 MAP('STSEMP7')
009500 FROM(STSEMP7O)
009600 ERASE
009700 CURSOR
009800 END-EXEC
009810 WHEN SEND-DATAONLY-ALARM
009820 EXEC CICS
009830 SEND
009840 MAPSET('STSEMP7')
009850 MAP('STSEMP7')
009860 FROM(STSEMP7O)
009870 DATAONLY
009871 ALARM
009880 CURSOR
009890 END-EXEC
009891 END-EVALUATE.
009900*
009910 1500-SEND-KEY-MAP.
009920*
009930 MOVE 'WXBA' TO TRANID1O.
009940*
009950 EVALUATE TRUE
009960 WHEN SEND-ERASE
009970 EXEC CICS
009980 SEND
009990 MAPSET('STSACT7')
009991 MAP('STSACT7')
009992 FROM(STSACT7O)
009993 ERASE
009994 CURSOR
009995 END-EXEC
009996 WHEN SEND-ERASE-ALARM
009997 EXEC CICS
009998 SEND
009999 MAPSET('STSACT7')
010000 MAP('STSACT7')
010001 FROM(STSACT7O)
010002 ERASE
010003 ALARM
010004 CURSOR
010005 END-EXEC
File Maintenance with TSQ Page 11 of 17
010006 WHEN SEND-DATAONLY-ALARM
010007 EXEC CICS
010008 SEND
010009 MAPSET('STSACT7')
010010 MAP('STSACT7')
010011 FROM(STSACT7O)
010012 DATAONLY
010013 ALARM
010014 CURSOR
010015 END-EXEC
010016 END-EVALUATE.
010017*
010020 2000-PROCESS-ADD-CUSTOMER.
010100*
010200 PERFORM 2100-RECEIVE-DATA-MAP.
010210 PERFORM 2200-EDIT-CUSTOMER-DATA.
010220 IF VALID-DATA
010300 PERFORM 2300-WRITE-CUSTOMER-RECORD
010400 IF RESPONSE-CODE = DFHRESP(NORMAL)
010500 MOVE 'CUSTOMER RECORD ADDED.' TO MSG1O
010600 SET SEND-ERASE TO TRUE
010700 ELSE
010810 IF RESPONSE-CODE = DFHRESP(DUPREC)
010820 MOVE 'ANOTHER USER HAS ADDED A RECORD WITH THAT CUST
010821- 'OMER NUMBER.' TO MSG1O
010830 SET SEND-ERASE-ALARM TO TRUE
010840 END-IF
010900 END-IF
011000 MOVE -1 TO CUSTNO1L
011010 SET PROCESS-KEY-MAP TO TRUE
011100 PERFORM 1500-SEND-KEY-MAP
011101 ELSE
011102 MOVE LOW-VALUE TO LNAMEO,
011103 FNAMEO,
011104 ADDRO,
011105 CITYO,
011106 STATEO,
011107 ZIPCODEO
011108 SET SEND-DATAONLY-ALARM TO TRUE
011109 PERFORM 1400-SEND-DATA-MAP
011110 END-IF.
011111*
011120 2100-RECEIVE-DATA-MAP.
011121 EXEC CICS
011122 RECEIVE
011123 MAPSET('STSEMP7')
011124 MAP('STSEMP7')
011125 INTO(STSEMP7I)
011126 END-EXEC.
011127* INSPECT STSEMP7I REPLACING ALL '_' BY SPACE.
011128*
011130 2200-EDIT-CUSTOMER-DATA.
011131*
011132* MOVE ATTR-NO-HIGHLIGHT TO ZIPCODEH,
011133* STATEH,
011134* CITYH,
011135* ADDRH,
011136* FNAMEH,
011137* LNAMEH.
011138*
011139 IF ZIPCODEI = SPACE OR ZIPCODEL = ZERO
011140* MOVE ATTR-REVERSE TO ZIPCODEH
011141 MOVE -1 TO ZIPCODEL
File Maintenance with TSQ Page 12 of 17
011142 MOVE 'YOU MUST ENTER A ZIP CODE.' TO MSG2O
011143 MOVE 'N' TO VALID-DATA-SW
011144 END-IF.
011145*
011146 IF STATEI = SPACE OR STATEL = ZERO
011147* MOVE ATTR-REVERSE TO STATEH
011148 MOVE -1 TO STATEL
011149 MOVE 'YOU MUST ENTER A STATE.' TO MSG2O
011150 MOVE 'N' TO VALID-DATA-SW
011151 END-IF.
011152*
011153 IF CITYI = SPACE OR CITYL = ZERO
011154* MOVE ATTR-REVERSE TO CITYH
011155 MOVE -1 TO CITYL
011156 MOVE 'YOU MUST ENTER A CITY.' TO MSG2O
011157 MOVE 'N' TO VALID-DATA-SW
011158 END-IF.
011159*
011160 IF ADDRI = SPACE OR ADDRL = ZERO
011161* MOVE ATTR-REVERSE TO ADDRH
011162 MOVE -1 TO ADDRL
011163 MOVE 'YOU MUST ENTER A ADDRESS.' TO MSG2O
011164 MOVE 'N' TO VALID-DATA-SW
011165 END-IF.
011166*
011167 IF FNAMEI = SPACE OR FNAMEL = ZERO
011168* MOVE ATTR-REVERSE TO FNAMEH
011169 MOVE -1 TO FNAMEL
011170 MOVE 'YOU MUST ENTER A FIRST NAME.' TO MSG2O
011171 MOVE 'N' TO VALID-DATA-SW
011172 END-IF.
011173*
011174 IF LNAMEI = SPACE OR LNAMEL = ZERO
011175* MOVE ATTR-REVERSE TO LNAMEH
011176 MOVE -1 TO LNAMEL
011177 MOVE 'YOU MUST ENTER A LAST NAME.' TO MSG2O
011178 MOVE 'N' TO VALID-DATA-SW
011179 END-IF.
011180*
011181 2300-WRITE-CUSTOMER-RECORD.
011182*
011183 MOVE CUSTNO2I TO CM-CUSTOMER-NUMBER.
011184 MOVE LNAMEI TO CM-LAST-NAME.
011185 MOVE FNAMEI TO CM-FIRST-NAME.
011186 MOVE ADDRI TO CM-ADDRESS.
011187 MOVE CITYI TO CM-CITY.
011188 MOVE STATEI TO CM-STATE.
011189 MOVE ZIPCODEI TO CM-ZIP-CODE.
011190 EXEC CICS
011191 WRITE
011192 FILE('CIUAFF1')
011193 RIDFLD(CM-CUSTOMER-NUMBER)
011194 FROM(CUSTOMER-MASTER-RECORD)
011195 RESP(RESPONSE-CODE)
011196 END-EXEC.
011197 IF RESPONSE-CODE NOT = DFHRESP(NORMAL)
011198 AND RESPONSE-CODE NOT = DFHRESP(DUPREC)
011199 PERFORM 9999-TERMINATE-PROGRAM
011200 END-IF.
011201*
011202 3000-PROCESS-CHANGE-CUSTOMER.
011203*
011204 PERFORM 2100-RECEIVE-DATA-MAP.
File Maintenance with TSQ Page 13 of 17
011205 PERFORM 2200-EDIT-CUSTOMER-DATA.
011206 IF VALID-DATA
011207 MOVE CUSTNO2I TO CM-CUSTOMER-NUMBER
011208 PERFORM 3100-READ-CUSTOMER-FOR-UPDATE
011209 IF RESPONSE-CODE = DFHRESP(NORMAL)
011210 EXEC CICS
011211 READQ TS
011212 QUEUE(TS-QUEUE-NAME)
011213 INTO(TS-CUSTOMER-RECORD)
011214 ITEM(TS-ITEM-NUMBER)
011215 END-EXEC
011216 IF CUSTOMER-MASTER-RECORD = TS-CUSTOMER-RECORD
011217 PERFORM 3200-REWRITE-CUSTOMER-RECORD
011218 MOVE 'CUSTOMER RECORD UPDATED.' TO MSG1O
011219 SET SEND-ERASE TO TRUE
011220 ELSE
011221 MOVE 'ANOTHER USER HAS UPDATED THE RECORD.'
011222 TO MSG1O
011223 SET SEND-ERASE-ALARM TO TRUE
011224 END-IF
011225 ELSE
011226 IF RESPONSE-CODE = DFHRESP(NOTFND)
011227 MOVE 'ANOTHER USER HAS DELETED THE RECORD.'
011228 TO MSG1O
011229 SET SEND-ERASE-ALARM TO TRUE
011230 END-IF
011231 END-IF
011232 MOVE -1 TO CUSTNO1L
011233 SET PROCESS-KEY-MAP TO TRUE
011234 PERFORM 1500-SEND-KEY-MAP
011235 ELSE
011236 MOVE LOW-VALUE TO LNAMEO,
011237 FNAMEO,
011238 ADDRO,
011239 CITYO,
011240 STATEO,
011241 ZIPCODEO
011242 SET SEND-DATAONLY-ALARM TO TRUE
011243 PERFORM 1400-SEND-DATA-MAP
011244 END-IF.
011245*
011246 3100-READ-CUSTOMER-FOR-UPDATE.
011247*
011248 EXEC CICS
011249 READ
011250 FILE('CIUAFF1')
011251 RIDFLD(CM-CUSTOMER-NUMBER)
011252 INTO(CUSTOMER-MASTER-RECORD)
011253 RESP(RESPONSE-CODE)
011254 UPDATE
011255 END-EXEC.
011256 IF RESPONSE-CODE NOT = DFHRESP(NORMAL)
011257 AND RESPONSE-CODE NOT = DFHRESP(NOTFND)
011258 PERFORM 9999-TERMINATE-PROGRAM
011259 END-IF.
011260*
011261 3200-REWRITE-CUSTOMER-RECORD.
011262*
011263 MOVE LNAMEI TO CM-LAST-NAME.
011264 MOVE FNAMEI TO CM-FIRST-NAME.
011265 MOVE ADDRI TO CM-ADDRESS.
011266 MOVE CITYI TO CM-CITY.
011267 MOVE STATEI TO CM-STATE.
File Maintenance with TSQ Page 14 of 17
011268 MOVE ZIPCODEI TO CM-ZIP-CODE.
011269 EXEC CICS
011270 REWRITE
011271 FILE('CIUAFF1')
011272 FROM(CUSTOMER-MASTER-RECORD)
011273 RESP(RESPONSE-CODE)
011274 END-EXEC.
011275 IF RESPONSE-CODE NOT = DFHRESP(NORMAL)
011276 PERFORM 9999-TERMINATE-PROGRAM
011277 END-IF.
011278*
011279 4000-PROCESS-DELETE-CUSTOMER.
011280*
011290 MOVE CA-CUSTOMER-NUMBER TO CM-CUSTOMER-NUMBER.
011291 PERFORM 3100-READ-CUSTOMER-FOR-UPDATE.
011292 IF RESPONSE-CODE = DFHRESP(NORMAL)
011293 EXEC CICS
011294 READQ TS
011295 QUEUE(TS-QUEUE-NAME)
011296 INTO(TS-CUSTOMER-RECORD)
011297 ITEM(TS-ITEM-NUMBER)
011298 END-EXEC
011299 IF CUSTOMER-MASTER-RECORD = TS-CUSTOMER-RECORD
011300 PERFORM 4100-DELETE-CUSTOMER-RECORD
011301 MOVE 'CUSTOMER DELETED.' TO MSG1O
011302 SET SEND-ERASE TO TRUE
011303 ELSE
011304 MOVE 'ANOTHER USER HAS UPDATED THE RECORD. TRY AGAIN.'
011305 TO MSG1O
011306 SET SEND-ERASE-ALARM TO TRUE
011310 END-IF
011320 ELSE
011330 IF RESPONSE-CODE = DFHRESP(NOTFND)
011340 MOVE 'ANOTHER USER HAS DELETED THE RECORD.'
011350 TO MSG1O
011360 SET SEND-ERASE-ALARM TO TRUE
011370 END-IF
011371 END-IF.
011380 MOVE -1 TO CUSTNO1L.
011390 SET PROCESS-KEY-MAP TO TRUE.
011391 PERFORM 1500-SEND-KEY-MAP.
011392*
011400 4100-DELETE-CUSTOMER-RECORD.
011500 EXEC CICS
011600 DELETE
011700 FILE('CIUAFF1')
011900 RESP(RESPONSE-CODE)
012000 END-EXEC.
012100 IF RESPONSE-CODE NOT = DFHRESP(NORMAL)
012200 PERFORM 9999-TERMINATE-PROGRAM
012300 END-IF.
012400*
012500 9999-TERMINATE-PROGRAM.
012510 MOVE EIBRESP TO ERR-RESP.
012520 MOVE EIBRESP2 TO ERR-RESP2.
012530 MOVE EIBTRNID TO ERR-TRNID.
012540 MOVE EIBRSRCE TO ERR-RSRCE.
012600 EXEC CICS
012700 XCTL
012800 PROGRAM('STSHIREA')
012900 COMMAREA(ERROR-PARAMETERS)
013000 END-EXEC.

File Maintenance with TSQ Page 15 of 17


Error handling Program- Abend Program.

000100 IDENTIFICATION DIVISION.


000200 PROGRAM-ID. STSHIREA.
000300*
000400 ENVIRONMENT DIVISION.
000500*
000600 DATA DIVISION.
000700*
000800 WORKING-STORAGE SECTION.
000900*
001000 01 ERROR-MESSAGE.
001100 05 ERROR-LINE-1.
001200 10 FILLER PIC X(20) VALUE 'A SERIOUS ERROR HAS '.
001300 10 FILLER PIC X(20) VALUE 'OCCURRED. PLEASE CON'.
001310 10 FILLER PIC X(20) VALUE 'TACT TECHNICAL SUPPO'.
001400 10 FILLER PIC X(19) VALUE 'RT. '.
001500*
001510 05 ERROR-LINE-2 PIC X(79) VALUE SPACE.
001511*
001512 05 ERROR-LINE-3.
001520 10 FILLER PIC X(11) VALUE 'EIBRESP = '.
001530 10 EM-RESP PIC Z(08)9.
001540 10 FILLER PIC X(59) VALUE SPACE.
001560*
001570 05 ERROR-LINE-4.
001580 10 FILLER PIC X(11) VALUE 'EIBRESP2 = '.
001590 10 EM-RESP2 PIC Z(08)9.
001591 10 FILLER PIC X(59) VALUE SPACE.
001592*
001593 05 ERROR-LINE-5.
001594 10 FILLER PIC X(11) VALUE 'EIBTRNID = '.
001595 10 EM-TRNID PIC X(04).
001596 10 FILLER PIC X(64) VALUE SPACE.
001597*
001598 05 ERROR-LINE-6.
001599 10 FILLER PIC X(11) VALUE 'EIBRSRCE = '.
001600 10 EM-RSRCE PIC X(08).
001601 10 FILLER PIC X(60) VALUE SPACE.
001602*
001603 05 ERROR-LINE-7 PIC X(79) VALUE SPACE.
001610*
001700*COPY ERRPARM
001800 01 ERROR-PARAMETERS.
001900 05 ERR-RESP PIC S9(08) COMP.
001910 05 ERR-RESP2 PIC S9(08) COMP.
002010 05 ERR-TRNID PIC X(04).
002020 05 ERR-RSRCE PIC X(08).
002100*
002200 LINKAGE SECTION.
002210*
002300 01 DFHCOMMAREA PIC X(20).
002400*

File Maintenance with TSQ Page 16 of 17


002500 PROCEDURE DIVISION.
002600*
002700 0000-DISPLAY-ERROR-MESSAGE.
002800*
002900 MOVE DFHCOMMAREA TO ERROR-PARAMETERS.
003010 MOVE ERR-RESP TO EM-RESP.
003020 MOVE ERR-RESP2 TO EM-RESP2.
003030 MOVE ERR-TRNID TO EM-TRNID.
003040 MOVE ERR-RSRCE TO EM-RSRCE.
003100 EXEC CICS
003200 SEND
003300 TEXT
003400 FROM(ERROR-MESSAGE)
003500 ERASE
003600 ALARM
003700 FREEKB
003800 END-EXEC.
003900 EXEC CICS
004000 RETURN
004100 END-EXEC.

File Maintenance with TSQ Page 17 of 17

Você também pode gostar