++APAR(ASZ2296). /*----------------------------------------------------- COPYRIGHT AUSTRALIAN SYSTEMS ENGINEERING PTY. LTD. 1999. ASZ2296 930913 61VLLC MB OMCSV2 V201 INCORROUT OMCSDSIU 991209 O__-PJS When exiting from a dataset identification rule, there is no message to indicate whether the rule has been updated or not. _PROBLEM DESCRIPTION: When exiting from a dataset identification rule, there is no message to indicate whether the rule has been updated or not. _PROBLEM SUMMARY: USERS AFFECTED: IRM users When a DI rule was saved, no check was made to see if the rule had been changed. The rule (and the last modified date) was always updated. Also, no message was issued to indicate that the rule was updated. _PROBLEM CONCLUSION RECOMMENDATION: Apply APAR fix ASZ2296 OMCSDSIU will be modified to check if any changes were made prior to updating a DI rule. If no changes were made, the last modified date and userid will be left untouched. If there were changes, the rule will be updated. A message will be issued to indicate whether the rule was updated or not. _SMP/E SITES PLEASE NOTE: 1. If you have PTF ASP0699 installed on your system, you may apply two or more source update APAR fixes to the same source module simultaneously. If you do not have PTF ASP0699 installed, do NOT attempt to apply two or more source update APAR fixes to the same source module simultaneously - you will get incorrect results. _NON-SMP/E SITES PLEASE NOTE: 1. Apply this fix using the ASMPMAIN program. Refer to ASE Technical Bulletin TB90-0014 for sample JCL for running this program or see the .ASESAMP member called RUNASMP. 2. This fix contains ++SRCUPD statements. After applying the fix you must recompile the ECL programs named in ++SRCUPD statements to create new load modules from them. For sample JCL see the .ASESAMP member called RUNECLC which was distributed on PUT9112. NEED FURTHER HELP? CALL ASE FOR ASSISTANCE. */ ++VER(Z038) FMID(ASEB200) PRE(ASP0808,ASZ2300,ASZ2581,ASZ2583,ASZ3068,ASZ3107, ASZ3114). ++SRCUPD(OMCSDSIU). ./ CHANGE NAME=OMCSDSIU APAR ASZ2296 Z2296002 /*PRE ASP0808,ASZ2300,ASZ2581,ASZ2583,ASZ3068,ASZ3107,ASZ3114 Z2296004 AUDIT ON Z2296006 F STG1DF: 1 Z2296008 F STG1PU Z2296010 :D1 Z2296012 :I1 Z2296014 GOTO (STG1PU,STG1PU,STG1PD) Z2296016 DO 1 Z2296018 :I3 Z2296020 IF &LMSG= /* WHEN NO MESSAGE... Z2296022 SET LMSG=&CAPSOFF(USE) ADD &CAPSOFF(OR) S &CAPSOFF(COMMAND +Z2296024 TO CREATE A NEW RULE) Z2296026 F STG1UPRD: 1 Z2296028 F RETURNS(EDRC Z2296030 F LMSG Z2296032 :I1 Z2296034 SET RC=&EDRC /* KEEP RETURN CODE FOR LATER Z2296036 F RETURNS(RC Z2296038 C 'RC +' 'XRC +' Z2296040 DO 1 Z2296042 :I2 Z2296044 IF# &XRC>0 /* IF PUTRULE FAILED... Z2296046 SET RC=&XRC /* ...COPY THE RETURN CODE Z2296048 F RETURNS(RC Z2296050 C 'RC +' 'XRC +' Z2296052 DO 1 Z2296054 :I2 Z2296056 IF# &XRC>0 /* IF PUTRULE FAILED... Z2296058 SET RC=&XRC /* ...COPY THE RETURN CODE Z2296060 F RETURNS(RC Z2296062 C RC XRC Z2296064 F LMSG= Z2296066 C 'RC=0 LMSG=' 'RC LMSG' Z2296068 F PUTRULE: 1 Z2296070 F 'SET DESC' Z2296072 :I21 Z2296074 Z2296076 /*---------- GET A COPY OF THE OLD RULES FOR COMPARISON Z2296078 IF &@RW<> /* IF THERE'S A REPLACEMENT RULE... Z2296080 GETRULE (&KEY) RETURNS(RC @OL LMSG) Z2296082 IF# &RC>0 Z2296084 RETURN RETC=&RC LMSG Z2296086 DBTOP &@OL Z2296088 DBSKIP &@OL Z2296090 SET (OLD- JKEY REC# DESC TODM USRM ROPT,+ Z2296092 C8 1 C4 1 C40 1 C17 1 C8 1 C1)=&DBRTXT Z2296094 DBDELR &@OL /* REMOVE IT FOR COMPARE Z2296096 Z2296098 /*---------- COMPARE OLD AND NEW RULES - HAVE THEY CHANGED? Z2296100 COMPFL &@RW + /* NEW RULES FILE Z2296102 &@OL + /* OLD RULES FILE Z2296104 RETURNS(RC) /* RC=0 - SAME, RC=4 - DIFFERENT Z2296106 DBCLOSE &@OL /* GET RID OF OLD RULES FILE Z2296108 IF# &RC=0 /* IF RULES ARE THE SAME... Z2296110 IF &OLDDESC&OLDROPT=&MAP(C40,&DESC)&ROPT /* & HDR SAMEZ2296112 SET LMSG=&CAPSOFF(RULE NOT CHANGED) Z2296114 GOTO PUTRULEJ Z2296116 F PUTRULEH: 1 Z2296118 F DBTOP Z2296120 :D2 Z2296122 :I42 Z2296124 SET LMSG=&CAPSOFF(RULE WAS REPLACED) Z2296126 PUTRULEJ:DBTOP &@RW Z2296128 RETURN RC=0 LMSG Z2296130 Z2296132 COMPFL: PROC + Z2296134 +/*-------------------------------------------------------------------- Z2296136 +/* A PROCEDURE TO COMPARE TWO FILES TO DETERMINE IF THEY ARE DIFFERENT Z2296138 +/*-------------------------------------------------------------------- Z2296140 NEWPOOL EXPECTS(@F1 + /* FILELETTER FOR FIRST FILE Z2296142 @F2) /* FILELETTER FOR SECOND FILE Z2296144 Z2296146 /*---------- CHECK RECORD COUNT FOR EACH FILE Z2296148 DBTOP &@F1 Z2296150 SET X=&DBRTOT /* NUMBER OF RECORDS IN FIRST FILE Z2296152 DBTOP &@F2 Z2296154 IF# &X<>&DBRTOT /* IF DIFFERENT NUMBER OF RECORDS... Z2296156 RETURN RETC=4 /* ...INDICATE THEY ARE DIFFERENT Z2296158 Z2296160 /*---------- NOW WE HAVE TO COMPARE THE RECORDS Z2296162 SET RC=0 /* INIT RETCODE TO "SAME" Z2296164 COMPFLB: DBSKIP &@F1 /* GET NEXT RECORD Z2296166 IF# &RETC=0 /* IF THERE IS A NEXT ONE... Z2296168 SET R1=&DBRTXT /* GET A COPY OF IT Z2296170 DBSKIP &@F2 /* GET NEXT RECORD FROM OTHER FILE Z2296172 SET R2=&DBRTXT /* AND GET A COPY OF THAT ONE TWO Z2296174 Z2296176 /*---------- COMPARE THE RECORDS IN 256 BYTE CHUNKS Z2296178 COMPFLD: SET (B1 R1,+ /* BREAK OFF A BITE-SIZED CHUNK Z2296180 C256 C32767)=&R1 Z2296182 SET (B2 R2,+ /* SAME FOR OTHER RECORD Z2296184 C256 C32767)=&R2 Z2296186 Z2296188 IF &B1<>&B2 /* IF DIFFERENT... Z2296190 SET RC=4 /* ...SET RETCODE TO "DIFFERENT" Z2296192 GOTO COMPFLX /* ...FINISHED-> Z2296194 Z2296196 IF &R1= /* IF RECORD EXHAUSTED... Z2296198 GOTO COMPFLB /* ...NEXT RECORD-> Z2296200 GOTO COMPFLD /* ELSE NEXT BITE-> Z2296202 Z2296204 /*---------- FINISHED Z2296206 COMPFLX: RETURN RETC=&RC Z2296208 END Z2296210