PROC 2 XOPT XDN XMEM() /*****************************************************************/ /* XEF - VERSION 6.4.3 WRITTEN BY MARK ZELDEN */ /* LASTUPD 11/01/2013 */ /* */ /* V1.0 - EDIT,BROWSE,ATTRIBUTES LIST, ADD DSN, AND REMOVE */ /* DSN OPTIONS. */ /* V2.0 - ADDED MEMBER LIST OPTION. */ /* V3.0 - ADDED COMPRESS OPTION AND REMOVED THE ADD & REMOVE */ /* OPTIONS. DATASETS ARE NOW ADDED BY TYPING THEM IN */ /* DIRECTLY ON THE MAIN MENU. */ /* V4.0 - INCREASED NUMBER OF DATASETS FROM 24 TO 34 AND */ /* ADDED EDIT RECOVERY CODE. */ /* V5.0 - ADDED DATASET INFORMATION OPTION, REMOVED LIST OPTION. */ /* V5.1 - ADDED MEMBER PATTERN SUPPORT FOR MEMBER LIST OPTION */ /* V5.2 - ADDED ENHANCED MEMBER PATTERN SUPPORT FOR ISPF V3. */ /* V6.0 - INCREASED NUMBER OF DATASETS FROM 34 TO 99 AND MADE */ /* THE DATASET LIST SCROLLABLE. ADDED VIEW OPTION ON MAIN */ /* PANEL AND MEMBER LIST TO SUPPORT ISPF V4. ADDED */ /* "USED EXTENTS" CODE TO CLIST AND TO DSN INFO PANELS. */ /* ADDED CURSOR SELECTION OF DATASETS. */ /* V6.0.1 ADDED CODE TO HONOR "CONFIRM" SETTING FOR EDIT/VIEW */ /* V6.1 - ADDED PDS OPTION - TO REMOVE PDS SUPPORT, CHANGE */ /* &PDS = Y TO &PDS = N IN THE PROC SECTION OF XEFMENU. */ /* IF THE PDS COMMAND HAS A DIFFERENT NAME THAN PDS, SUCH */ /* AS PDS85, YOU MUST CHANGE THE COMMAND IN THE CODE BELOW*/ /* IN THE "PDS MEMBER" SECTION AND THE "PDS ALL" SECTION. */ /* V6.2 - ADDED DATASET INFORMATION SUPPORT FOR SMS CONTROLLED */ /* DSNS. ADDED 3 PANELS - XEFINFE, XEFINFP, & XEFINFS. */ /* V6.3 - ADDED DSLIST OPTION (ISPF 3.4) SO DSN PATTERNS CAN */ /* BE SAVED IN THE XEF MENU. OS/390 2.10 (ISPF V5) OR */ /* ABOVE IS NOW REQUIRED. */ /* V6.4 - ADDED FIND OPTION TO FIND DATASETS IN THE LIST THAT */ /* MATCH A SEARCH STRING. */ /* V6.4.1 ADDED DELETE MEMBER CONFIRMATION FOR MEMBER LIST AND */ /* HONOR "CONFIRM" SETTING. */ /* FORCE DSLIST OPTION IF NAME IS A PATTERN. */ /* V6.4.2 BLANK OUT THE SAVED "F" IN THE OPTION FIELD IF ANY */ /* DATA SETS ARE FOUND THAT MATCH THE SEARCH STRING. */ /* CHANGE XEFMENU PANEL SO THE COMMAND FIELD IS NOW */ /* THE "OTHER DSN" FIELD INSTEAD OF THE OPTION FIELD */ /* SO OPTIONS THAT CONFLICT WITH SCROLLING REMAIN */ /* IN THE OPTION FIELD WHILE SCROLLING THE LIST OF */ /* DATA SETS (M, D, & P). ALSO ADDED CODE TO THE PANEL */ /* TO ALLOW THE FULL OPTION NAME TO BE USED INSTEAD OF */ /* A SINGLE CHARACTER. FOR EXAMPLE: "EDIT" INSTEAD OF */ /* "E", "BROWSE" INSTEAD OF "B" ETC. */ /* V6.4.3 MOVED CHECK FOR NULL DATA SET NAME AFTER THE "FIND" */ /* OPTION CODE. */ /*****************************************************************/ /* CONTROL LIST SYMLIST CONLIST */ ISPEXEC CONTROL ERRORS RETURN /* DETERMINE ISPF LEVEL */ ISPEXEC VGET ZENVIR SET XIVER3 = &SUBSTR(6:8,&ZENVIR) SET XIVER1 = &SUBSTR(1:1,&XIVER3) IF &XIVER1 >= 4 THEN DO ISPEXEC VGET ZPCFMCN PROFILE IF &STR(&ZPCFMCN) = &STR(/) THEN + SET &CONF = &STR(YES) ELSE + SET &CONF = &STR(NO) END /* */ ISPEXEC VGET XDSN&XDN PROFILE SET &NAME = &STR(&&XDSN&XDN) SET &NAME = &STR(&NAME) /*********************************/ /* CHECK FOR "OTHER DATASET" */ /*********************************/ ISPEXEC VGET XODSN PROFILE IF &STR(&XODSN) ^= &STR() THEN DO SET &NAME = &STR(&XODSN) SET &NAME = &STR(&NAME) END /*********************************/ /* FIND OPTION */ /*********************************/ /* IF &XOPT = &STR(F) OR &XOPT = &STR(FIND) THEN DO IF &XOPT = &STR(F) THEN DO CONTROL ASIS WRITE Please type the search string and hit enter: CONTROL CAPS READ FNAME SET &FOUND = NOTFOUND SET &NUMFD = 0 /* DO &XCOUNT = 01 TO 99 WHILE &FOUND = NOTFOUND /*1ST MATCH ONLY*/ DO &XCOUNT = 01 TO 99 ISPEXEC VGET XDSN&XCOUNT PROFILE SET &NAME = &STR(&&XDSN&XCOUNT) SET &NAME = &STR(&NAME) IF &SYSINDEX(&FNAME,&NAME) ^= 0 THEN DO IF &XCOUNT LT 10 THEN SET &XCOUNT = &STR( &XCOUNT) WRITE &XCOUNT &NAME SET &FOUND = FOUNDIT SET &NUMFD = &NUMFD+1 SET &SAVFD = &XCOUNT SET &XOPT = &STR() /* IF ANY MATCH, BLANK OUT FIND OPT */ ISPEXEC VPUT XOPT END END IF &NUMFD = 1 THEN DO /* IF ONLY 1 MATCH, UPDATE NUM IN MENU */ SET &XN = &SAVFD ISPEXEC VPUT XN END IF &FOUND = NOTFOUND THEN DO SET &ZERRMSG = &STR(XEF008A) ISPEXEC SETMSG MSG(&ZERRMSG) GOTO ENDIT END END /*********************************/ /* CHECK FOR NULL DATASET NAME */ /*********************************/ IF &STR(&NAME) = &STR() THEN DO SET &ZERRMSG = &STR(XEF004A) ISPEXEC SETMSG MSG(&ZERRMSG) GOTO ENDIT END /***********************************/ /* FORCE DSLIST IF PATTERN IN NAME */ /***********************************/ IF &SYSINDEX(*,&NAME) ^= 0 OR &SYSINDEX(%,&NAME) ^= 0 THEN DO SET &XOPT = &STR(D) ISPEXEC VPUT XOPT PROFILE END /*********************************/ /* DATASET INFORMATION OPTION */ /*********************************/ IF &XOPT = &STR(I) THEN DO LISTDSI '&NAME' NORECALL DIRECTORY SMSINFO SET &RC = &LASTCC IF &RC = 16 THEN DO SET &XERRMSG = &SUBSTR(11:&LENGTH(&STR(&SYSMSGLVL2)),+ &SYSMSGLVL2) SET &ZERRMSG = &STR(XEF007A) ISPEXEC SETMSG MSG(&ZERRMSG) GOTO ENDIT END SET &DSNAME = &STR(&SYSDSNAME) SET &VOLUME = &STR(&SYSVOLUME) SET &UNIT = &STR(&SYSUNIT) SET &DSORG = &STR(&SYSDSORG) SET &RECFM = &STR(&SYSRECFM) SET &LRECL = &STR(&SYSLRECL) SET &BLKSIZE = &STR(&SYSBLKSIZE) SET &ALLOC = &STR(&SYSALLOC) SET &USED = &STR(&SYSUSED) SET &PRIMARY = &STR(&SYSPRIMARY) SET &SECONDS = &STR(&SYSSECONDS) SET &UNITS = &STR(&SYSUNITS) SET &EXTENTS = &STR(&SYSEXTENTS) SET &CREATE = &STR(&SYSCREATE) SET &REFDATE = &STR(&SYSREFDATE) SET &EXDATE = &STR(&SYSEXDATE) SET &UPDATED = &STR(&SYSUPDATED) SET &ADIRBLK = &STR(&SYSADIRBLK) SET &UDIRBLK = &STR(&SYSUDIRBLK) SET &MEMBERS = &STR(&SYSMEMBERS) /* PDSE VARS */ /* SET &DSSMS = &STR(&SYSDSSMS) */ /* IF &STR(&DSSMS) ^= &STR(PDS) && + */ /* &STR(&DSSMS) ^= &STR(SEQ) THEN + */ /* SET &DSSMS = &STR(LIBRARY) */ SET &USEDPAGE = &STR(&SYSUSEDPAGES) SET &DATACLAS = &STR(&SYSDATACLASS) SET &STORCLAS = &STR(&SYSSTORCLASS) SET &MGMTCLAS = &STR(&SYSMGMTCLASS) /*****************************************/ /* DETERMINE HOW MANY EXTENTS ARE USED */ /*****************************************/ IF &STR(&ADIRBLK) = &STR(NO_LIM) THEN DO SET &ADIRBLK = &STR(NOLIMIT) GOTO SKIPEXT END IF &USED <= &PRIMARY THEN DO SET &USEDEXT=1 END ELSE DO SET &TEMPUA = 2 SET &TEMPUB = &EVAL(&PRIMARY+&SECONDS) EXTLOOP: + SET &TEMPUC = &EVAL(&TEMPUB/&USED) IF &TEMPUC = 0 THEN DO SET &USEDEXT = &EXTENTS GOTO SKIPEXT END IF &TEMPUC >= 1 THEN SET &USEDEXT = &TEMPUA ELSE DO SET &TEMPUB = &EVAL(&TEMPUB+&SECONDS) SET &TEMPUA = &EVAL(&TEMPUA+1) GOTO EXTLOOP END END IF &USEDEXT > &EXTENTS THEN SET &USEDEXT = &EXTENTS /*****************************************/ /* DISPLAY CORRECT INFORMATION PANEL */ /*****************************************/ SKIPEXT: + SELECT WHEN (&RC <= 4 AND &ADIRBLK ^= &STR()) DO /* PDS */ IF &ADIRBLK = &STR(NOLIMIT) THEN + ISPEXEC DISPLAY PANEL(XEFINFE) /* PDSE */ ELSE + IF &STR(&STORCLAS) ^= &STR() THEN + ISPEXEC DISPLAY PANEL(XEFINFP) /* PDS SMS */ ELSE + ISPEXEC DISPLAY PANEL(XEFINFD) /* PDS NONSMS */ END OTHERWISE DO /* SEQ */ IF &STR(&STORCLAS) ^= &STR() THEN + ISPEXEC DISPLAY PANEL(XEFINFS) /* SEQ SMS */ ELSE + ISPEXEC DISPLAY PANEL(XEFINF) /* SEQ NONSMS */ END END EXIT CODE(0) END /*********************************/ /* EDIT MEMBER OPTION */ /*********************************/ IF &XOPT = &STR(E) THEN + IF &STR(&XMEM) NE &STR() THEN DO SET &EDITOK = NOTOK DO WHILE &EDITOK = NOTOK ISPEXEC EDREC QUERY IF &LASTCC = 4 THEN DO ISPEXEC DISPLAY PANEL(ISREDM02) SET &DISPRC = &LASTCC ISPEXEC VGET ZVERB IF &DISPRC = 0 THEN DO IF &ZEDCMD = THEN ISPEXEC EDREC PROCESS PASSWORD(&PSWD) IF &ZEDCMD = C THEN ISPEXEC EDREC CANCEL IF &ZEDCMD = D THEN ISPEXEC EDREC DEFER END ELSE IF &DISPRC = 8 && &STR(&ZVERB) = &STR(CANCEL) THEN + ISPEXEC EDREC CANCEL ELSE DO EXIT CODE(0) END END ELSE SET &EDITOK = OK END SET &RC = 0 IF &EDITOK = OK && &XIVER1 >= 4 THEN DO ISPEXEC EDIT DATASET ('&NAME(&XMEM)') CONFIRM(&CONF) SET &RC = &LASTCC IF &RC = 4 THEN SET &RC = 0 END IF &EDITOK = OK && &XIVER1 < 4 THEN DO ISPEXEC EDIT DATASET ('&NAME(&XMEM)') SET &RC = &LASTCC IF &RC = 4 THEN SET &RC = 0 END GOTO ENDIT END /*********************************/ /* EDIT ALL OPTION */ /*********************************/ IF &XOPT = &STR(E) THEN DO SET &EDITOK = NOTOK DO WHILE &EDITOK = NOTOK ISPEXEC EDREC QUERY IF &LASTCC = 4 THEN DO ISPEXEC DISPLAY PANEL(ISREDM02) SET &DISPRC = &LASTCC ISPEXEC VGET ZVERB IF &DISPRC = 0 THEN DO IF &ZEDCMD = THEN ISPEXEC EDREC PROCESS PASSWORD(&PSWD) IF &ZEDCMD = C THEN ISPEXEC EDREC CANCEL IF &ZEDCMD = D THEN ISPEXEC EDREC DEFER END ELSE IF &DISPRC = 8 && &STR(&ZVERB) = &STR(CANCEL) THEN + ISPEXEC EDREC CANCEL ELSE DO EXIT CODE(0) END END ELSE SET &EDITOK = OK END SET &RC = 0 IF &EDITOK = OK && &XIVER1 >= 4 THEN DO ISPEXEC EDIT DATASET ('&NAME') CONFIRM(&CONF) SET &RC = &LASTCC IF &RC = 4 THEN SET &RC = 0 END IF &EDITOK = OK && &XIVER1 < 4 THEN DO ISPEXEC EDIT DATASET ('&NAME') SET &RC = &LASTCC IF &RC = 4 THEN SET &RC = 0 END GOTO ENDIT END /*********************************/ /* PDS MEMBER OPTION */ /*********************************/ IF &XOPT = &STR(P) THEN + IF &STR(&XMEM) NE &STR() THEN DO PDS '&NAME' SHR ML &XMEM SET &RC = &LASTCC GOTO ENDIT END /*********************************/ /* PDS ALL OPTION */ /*********************************/ IF &XOPT = &STR(P) THEN DO PDS '&NAME' SET &RC = &LASTCC GOTO ENDIT END /*********************************/ /* BROWSE MEMBER OPTION */ /*********************************/ IF &XOPT = &STR(B) THEN + IF &STR(&XMEM) NE &STR() THEN DO ISPEXEC BROWSE DATASET ('&NAME(&XMEM)') SET &RC = &LASTCC GOTO ENDIT END /*********************************/ /* BROWSE ALL OPTION */ /*********************************/ IF &XOPT = &STR(B) THEN DO ISPEXEC BROWSE DATASET ('&NAME') SET &RC = &LASTCC GOTO ENDIT END /*********************************/ /* VIEW MEMBER OPTION */ /*********************************/ IF &XOPT = &STR(V) && &XIVER1 >= 4 THEN + IF &STR(&XMEM) NE &STR() THEN DO ISPEXEC VIEW DATASET ('&NAME(&XMEM)') CONFIRM(&CONF) SET &RC = &LASTCC GOTO ENDIT END IF &XOPT = &STR(V) && &XIVER1 < 4 THEN + IF &STR(&XMEM) NE &STR() THEN DO ISPEXEC VIEW DATASET ('&NAME(&XMEM)') SET &RC = &LASTCC GOTO ENDIT END /*********************************/ /* VIEW ALL OPTION */ /*********************************/ IF &XOPT = &STR(V) && &XIVER1 >= 4 THEN DO ISPEXEC VIEW DATASET ('&NAME') CONFIRM(&CONF) SET &RC = &LASTCC GOTO ENDIT END IF &XOPT = &STR(V) && &XIVER1 < 4 THEN DO ISPEXEC VIEW DATASET ('&NAME') SET &RC = &LASTCC GOTO ENDIT END /*********************************/ /* DSLIST OPTION */ /*********************************/ IF &XOPT = &STR(D) THEN DO ISPEXEC LMDINIT LISTID(XEFD1) LEVEL(&NAME) ISPEXEC LMDDISP LISTID(&XEFD1) SET &RC = &LASTCC GOTO ENDIT END /*********************************/ /* COMPRESS DATASET OPTION */ /*********************************/ IF &XOPT = &STR(Z) THEN DO ISPEXEC LMINIT DATAID(XEFD1) DATASET('&NAME') ENQ(EXCLU) SET &RC = &LASTCC IF &RC = 0 THEN DO ISPEXEC LMCOMP DATAID(&XEFD1) SET &RC = &LASTCC ISPEXEC LMFREE DATAID(&XEFD1) END IF &RC = 0 THEN DO /************************************************/ /* THE FOLLOWING CODE IS FOR FINDING OUT THE */ /* DATASET NAME FOR THE COMPRESS LISTING SO IT */ /* CAN BE DISPLAYED WITH THE HELP TEXT */ /************************************************/ ISPEXEC VGET ZTEMPF PROFILE SHARED /************************************************/ /* CHECK IF ISPCTL DATASET IS A TEMPORARY */ /* DATASET. IF IT IS , DO NOT DISPLAY WHERE */ /* THE COMPRESS LISTING IS BECAUSE IT IS NOT */ /* CATALOGED OR IT COULD BE IN VIO. */ /************************************************/ SET XCOMP1 = &LENGTH(&ZTEMPF) IF &XCOMP1 > 22 THEN DO /* CHECK IF TEMP DSN */ SET &ZERRMSG = &STR(XEF005A) ISPEXEC SETMSG MSG(&ZERRMSG) GOTO ENDIT END SET XCOMP2 = &SYSINDEX(SPFTEMP,&ZTEMPF) SET XCOMP3 = &XCOMP2+7 SET XCOMP4 = &SUBSTR(&XCOMP2:&XCOMP3,&ZTEMPF) SET XLISTDSN = &SYSUID..&XCOMP4..LIST SET &ZERRMSG = &STR(XEF005B) ISPEXEC SETMSG MSG(&ZERRMSG) END GOTO ENDIT END /*********************************/ /* MEMBER LIST OPTION */ /*********************************/ IF &XOPT = &STR(M) THEN DO ISPEXEC LMINIT DATAID(XEFD1) DATASET('&NAME') SET &RC = &LASTCC IF &RC = 0 THEN DO ISPEXEC LMOPEN DATAID(&XEFD1) SET &RC = &LASTCC IF &RC = 0 THEN DO SET &ZLLCMD = SET &ZLMEMBER = SET &ZLUDATA = ISPEXEC LMMDISP DATAID(&XEFD1) COMMANDS(ANY) MEMBER(&XMEM) SET &RC = &LASTCC DO WHILE &RC = 0 IF &STR(&ZLLCMD) = &STR(B) THEN DO ISPEXEC BROWSE DATAID(&XEFD1) MEMBER(&ZLMEMBER) SET &CC = &LASTCC SET &UD = &STR(*BROWSED) IF &CC ^= 0 THEN ISPEXEC SETMSG MSG(&ZERRMSG) END ELSE IF &STR(&ZLLCMD) = &STR(/) && &XIVER1 ^<4 THEN DO ISPEXEC BROWSE DATAID(&XEFD1) MEMBER(&ZLMEMBER) SET &CC = &LASTCC SET &UD = &STR(*BROWSED) IF &CC ^= 0 THEN ISPEXEC SETMSG MSG(&ZERRMSG) END ELSE IF &STR(&ZLLCMD) = &STR(V) && &XIVER1 ^<4 THEN DO ISPEXEC VIEW DATAID(&XEFD1) MEMBER(&ZLMEMBER) + CONFIRM(&CONF) SET &CC = &LASTCC SET &UD = &STR(*VIEWED) IF &CC ^= 0 THEN ISPEXEC SETMSG MSG(&ZERRMSG) END ELSE IF &STR(&ZLLCMD) = &STR(E) && &XIVER1 ^<4 THEN DO SET &EDITOK = NOTOK DO WHILE &EDITOK = NOTOK ISPEXEC EDREC QUERY IF &LASTCC = 4 THEN DO ISPEXEC DISPLAY PANEL(ISREDM02) SET &DISPRC = &LASTCC ISPEXEC VGET ZVERB IF &DISPRC = 0 THEN DO IF &ZEDCMD = THEN ISPEXEC EDREC PROCESS + PASSWORD(&PSWD) IF &ZEDCMD = C THEN ISPEXEC EDREC CANCEL IF &ZEDCMD = D THEN ISPEXEC EDREC DEFER END ELSE IF &DISPRC = 8 && &STR(&ZVERB) = &STR(CANCEL) + THEN ISPEXEC EDREC CANCEL ELSE DO EXIT CODE(0) END END ELSE SET &EDITOK = OK END SET &RC = 0 ISPEXEC EDIT DATAID(&XEFD1) MEMBER(&ZLMEMBER) + CONFIRM(&CONF) SET &CC = &LASTCC IF &CC = 4 THEN SET &CC = 0 SET &UD = &STR(*EDITED) END ELSE IF &STR(&ZLLCMD) = &STR(E) && &XIVER1 <4 THEN DO SET &EDITOK = NOTOK DO WHILE &EDITOK = NOTOK ISPEXEC EDREC QUERY IF &LASTCC = 4 THEN DO ISPEXEC DISPLAY PANEL(ISREDM02) SET &DISPRC = &LASTCC ISPEXEC VGET ZVERB IF &DISPRC = 0 THEN DO IF &ZEDCMD = THEN ISPEXEC EDREC PROCESS + PASSWORD(&PSWD) IF &ZEDCMD = C THEN ISPEXEC EDREC CANCEL IF &ZEDCMD = D THEN ISPEXEC EDREC DEFER END ELSE IF &DISPRC = 8 && &STR(&ZVERB) = &STR(CANCEL) + THEN ISPEXEC EDREC CANCEL ELSE DO EXIT CODE(0) END END ELSE SET &EDITOK = OK END SET &RC = 0 ISPEXEC EDIT DATAID(&XEFD1) MEMBER(&ZLMEMBER) SET &CC = &LASTCC IF &CC = 4 THEN SET &CC = 0 SET &UD = &STR(*EDITED) END ELSE IF &STR(&ZLLCMD) = &STR(P) THEN DO ISPEXEC LMPRINT DATAID(&XEFD1) MEMBER(&ZLMEMBER) SET &CC = &LASTCC SET &UD = &STR(*PRINTED) IF &CC ^= 0 THEN ISPEXEC SETMSG MSG(&ZERRMSG) END ELSE IF &STR(&ZLLCMD) = &STR(R) THEN DO ISPEXEC LMINIT DATAID(XEFD2) DATASET('&NAME') + ENQ(SHRW) SET &RC = &LASTCC IF &RC = 0 THEN DO ISPEXEC LMOPEN DATAID(&XEFD2) OPTION(OUTPUT) SET &CC = &LASTCC IF &CC = 0 THEN DO ISPEXEC LMMREN DATAID(&XEFD2) MEMBER(&ZLMEMBER) + NEWNAME(&ZLUDATA) SET &CC = &LASTCC IF &STR(&ZLUDATA) = THEN DO SET &ZERRMSG = &STR(ISRU003) SET &CURLOC = &STR(ZLUDATA) END SET &UD = &STR(*RENAMED) ISPEXEC LMCLOSE DATAID(&XEFD2) END ISPEXEC LMFREE DATAID(&XEFD2) END END ELSE IF &STR(&ZLLCMD) = &STR(D) THEN DO ISPEXEC LMINIT DATAID(XEFD2) DATASET('&NAME') + ENQ(SHRW) SET &RC = &LASTCC IF &RC = 0 THEN DO ISPEXEC LMOPEN DATAID(&XEFD2) OPTION(OUTPUT) SET &CC = &LASTCC IF &CC = 0 THEN DO ISPEXEC VGET ZMEMCONF IF &ZMEMCONF ^= OFF THEN DO SET ZCFDSN = &NAME SET ZCFMEM = &ZLMEMBER SET &UD = &STR(&Z) ISPEXEC ADDPOP ISPEXEC DISPLAY PANEL(ISRUDELC) SET &DISPRC = &LASTCC IF &DISPRC EQ 0 THEN DO ISPEXEC LMMDEL DATAID(&XEFD2) MEMBER(&ZLMEMBER) SET &CC = &LASTCC SET &UD = &STR(*DELETED) END ISPEXEC REMPOP END ELSE DO ISPEXEC LMMDEL DATAID(&XEFD2) MEMBER(&ZLMEMBER) SET &CC = &LASTCC SET &UD = &STR(*DELETED) END ISPEXEC LMCLOSE DATAID(&XEFD2) END ISPEXEC LMFREE DATAID(&XEFD2) END END ELSE DO IF &STR(&ZCMD) NE &STR(&Z) THEN DO SET &ZERRMSG = &STR(XEF006A) SET &CURLOC = &STR(ZCMD) END ELSE DO IF &XIVER1 < 4 THEN + SET &ZERRMSG = &STR(XEF006C) ELSE + SET &ZERRMSG = &STR(XEF006B) SET &CURLOC = &STR(ZLLCMD) END SET &CC = 4 END IF &CC = 0 THEN DO ISPEXEC LMMDISP DATAID(&XEFD1) OPTION(PUT) + MEMBER(&ZLMEMBER) ZLUDATA(&UD) ISPEXEC LMMDISP DATAID(&XEFD1) OPTION(GET) SET &RC = &LASTCC IF &RC = 8 THEN DO ISPEXEC LMMDISP DATAID(&XEFD1) COMMANDS(ANY) SET &RC = &LASTCC END END ELSE DO ISPEXEC SETMSG MSG(&ZERRMSG) ISPEXEC LMMDISP DATAID(&XEFD1) OPTION(PUT) + MEMBER(&ZLMEMBER) ZLLCMD(&ZLLCMD) ZLUDATA(&ZLUDATA) ISPEXEC LMMDISP DATAID(&XEFD1) COMMANDS(ANY) + CURSOR(&CURLOC) TOP(&ZLMEMBER) SET &RC = &LASTCC END END IF &RC = 8 THEN SET &RC = 0 ISPEXEC LMMDISP DATAID(&XEFD1) OPTION(FREE) IF &ZERRSM = &STR(NO MEMBER LIST) THEN DO SET PTRNSTRT = &SYSINDEX(&STR(*),&XMEM) IF &PTRNSTRT > 0 THEN SET &ZERRMSG = &STR(XEF003A) ELSE + SET &ZERRMSG = &STR(XEF003B) END IF &ZERRSM = &STR(DATA SET NOT PARTITIONED) THEN DO SET &ZERRMSG = &STR(XEF003C) END ISPEXEC LMCLOSE DATAID(&XEFD1) END ISPEXEC LMFREE DATAID(&XEFD1) END ENDIT: + IF &RC ^= 0 THEN ISPEXEC SETMSG MSG(&ZERRMSG) END EXIT