Gil, I attach a discussion about the IF/THEN vs COND= we had in 2011. That COND= BTW was for a real case of a chemical company running its payroll 100+ step job on our mainframe, but with a COND=(4,LT) on its job card. Each time one of its jobsteps hit a CC GT 4, the job ended and the ops had to call the company to explain the problem. The company finally explained that jobstep execution should continue at say "STEP20" if whatever combination of jobstep CCs was "this", and at say "STEP30" if the combination of jobstep CCs was "that" - else, if x then continue at y ... etc. The attachment includes also a copy of panel ISREDDE that mentions "*Use of panel ISREDDE will result in better performance in the editor.*" If you then issue command PANELID ON whilst in edit, I think you will see the panel is ISREDD2/3/4/5. Go to DSN=*.[S}ISPPLIB or whatever it is now called, compare the executable code in panel ISREDDE with that of ISREDDE2/3/4/5 (and bear in mind that this ISREDDE2 etc. code is executed every time any key is hit whilst in edit,) and you will hopefully understand that ISREDDE2 etc. is wasting as many CPU cycles as it can for the sake of displaying unnecessary drop-down menus and colors - none of which are needed for EDIT or ISR@PRIM etc. As they say, "if it ain't broke, don't fix it" - and neither BROWSE, nor EDIT, nor ISPF 3.4, nor assembler, nor SMP/E, nor anything similar is "broke" and needs "fixing", unless the objective is to waste as many CPU cycles as possible under the pretense of thereby improving mainframe programming - which, of course, does not need improving. BTW The fix is to copy ISREDDE into a separate PDS, alias ISREDDE as ISREDDE2/3/4/5 in that PDS, concat it ahead of ISPPLIB, logoff/logon and then reinvoke EDIT: "PANELID ON" will still show ISREDDE2/3/4/5 but without its drop down menus and using far fewer CPU cycles. Likewise, ISPF option 1 should display BROWSE and not VIEW: so copy ISR@PRIM to your ISPPLIB ahead of *.[S]ISPPLIB, change whatever option 1 is to "1,'PGM(ISRBRO) PARM(ISRBRO01)'" and you will then get BROWSE instead of VIEW when you hit ISPF option 1. The so-called "improvements" (drop-down menus etc.) serve only to waste CPU cycles, de-skill and stultify (i.e. reduce to an equal level of stupidity and mediocrity) mainframe programming and in particular systems programming. I call it the 'Pinocchio effect', whereby mainframe sysprogs are offered beer and cigars in exchange for agreeing to be turned into donkeys. HTH Cheers, Chris Poncelet (retired sysprog)
On 21/05/2021 21:20, CM Poncelet wrote: > "I fear the Greeks and when bearing gifts." > > On 20/05/2021 04:34, Paul Gilmartin wrote: >> On Thu, 20 May 2021 02:50:02 +0100, CM Poncelet wrote: >> >>> Again and with all due respect, progress is made not by blunting the >>> tool but by sharpening the user. >>> >>> "IF/THEN" does not handle all boolean AND/OR/NAND/XOR and >>> steps-not-executed conditions. >>> >> Example? In particular, something that can be done with "COND=" >> but not "IF/THEN". >> >>> Let not those who cannot master playing the violin demand that the >>> violin be made more easy, but let them try playing the banjo instead. >>> >> Earl Scruggs might have taken offense at that. >> >> Do you regard the invention of the automatic transmission a mistake? >> I assume you don't own one. >> >> Abacus vs. calculator vs. computer? >> >> Luddite. >> >> -- gil >> >> ---------------------------------------------------------------------- >> For IBM-MAIN subscribe / signoff / archive access instructions, >> send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN >> . >> > ---------------------------------------------------------------------- > For IBM-MAIN subscribe / signoff / archive access instructions, > send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN > . > ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
Paul Gilmartin wrote: > On Fri, 21 Jan 2011 02:01:45 +0000, CM Poncelet <ponce...@bcs.org.uk> wrote: > > > >> Any boolean tests can be performed with 'COND=', but not so with 'IF >> ELSE etc.' We have already discussed this in the past. >> >> > > Sorry; I missed that. > > > >> But please show me how 'IF ELSE ...' handles the following: >> >> Execute STEPF if >> - STEPA sets CC=04, STEPB sets CC=00, STEPC did not execute, STEPD sets >> CC=08 and STEPE did not execute >> or if >> - STEPA sets CC=00, STEPB did not execute, STEPC sets CC=04, STEPD did >> not execute and STEPE sets CC=00 >> or if >> - STEPA did not execute, STEPB sets CC=00, STEPC sets CC=04, STEPD sets >> CC=08 and STEPE sets either CC=04 or CC=08 >> otherwise do not execute STEPF. >> >> > > OK: > > // > //IFELSE JOB 505303JOB,'Paul Gilmartin', > // MSGLEVEL=(1,1),REGION=0M > //* > //USERC OUTPUT JESDS=ALL,DEFAULT=YES, > // CLASS=R,PAGEDEF=V0648Z,CHARS=GT12 > //* > //STEPA EXEC PGM=IEFBR14 > //STEPB EXEC PGM=IEFBR14 > //STEPC EXEC PGM=IEFBR14 > //STEPD EXEC PGM=IEFBR14 > //STEPE EXEC PGM=IEFBR14 > //TEST IF ( STEPA.RC=04 & STEPB.RC=00 & x > // STEPC.RUN=FALSE & STEPD.RC=08 & STEPE.RUN=FALSE ) | x > // ( STEPA.RC=00 & STEPB.RUN=FALSE & x > // STEPC.RC=04 & STEPD.RUN=FALSE & STEPE.RC=00 ) | x > // ( STEPA.RUN=FALSE & STEPB.RC=00 & x > // STEPC.RC=04 & STEPD.RC=08 & x > // ( STEPE.RC=04 | STEPE.RC=08 ) ) THEN > //STEPF EXEC PGM=IEFBR14 > //TEST ENDIF > // > > :w ! submit > Tested; STEPA through STEPE execute; STEPF is skipped because > of condiional expression. I didn't check with truth table. Also > typos possible. > > Now, kindly reciprocate and show me how this is coded with the > COND parameter on the EXEC statement, please, > Here it is again, hopefully more legible ... Case #1: //STEPA EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSIN DD * SET MAXCC EQ 4 //STEPB EXEC PGM=IEFBR14 //STEPC EXEC PGM=IEFBR14,COND=(0,LE) //STEPD EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSIN DD * SET MAXCC EQ 8 //STEPE EXEC PGM=IEFBR14,COND=(0,LE) //* //EX01 EXEC PGM=IEFBR14, // COND=((04,NE,STEPA),(00,NE,STEPB),(00,LE,STEPC), // (08,NE,STEPD),(00,LE,STEPE)) //EX02 EXEC PGM=IEFBR14, // COND=((00,NE,STEPA),(00,LE,STEPB),(04,NE,STEPC), // (00,LE,STEPD),(00,NE,STEPE)) //OX03 EXEC PGM=IEFBR14, // COND=((04,EQ,STEPE),(08,EQ,STEPE)) //EX03 EXEC PGM=IEFBR14, // COND=((00,LE,STEPA),(00,NE,STEPB),(04,NE,STEPC), // (08,NE,STEPD),(00,LE,OX03)) //NX04 EXEC PGM=IEFBR14, // COND=((00,LE,EX01),(00,LE,EX02),(00,LE,EX03)) //* //STEPF EXEC PGM=IEFBR14,COND=(00,LE,NX04) Case #2: //STEPA EXEC PGM=IEFBR14 //STEPB EXEC PGM=IEFBR14,COND=(0,LE) //STEPC EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSIN DD * SET MAXCC EQ 4 //STEPD EXEC PGM=IEFBR14,COND=(0,LE) //STEPE EXEC PGM=IEFBR14 //* //EX01 EXEC PGM=IEFBR14, // COND=((04,NE,STEPA),(00,NE,STEPB),(00,LE,STEPC), // (08,NE,STEPD),(00,LE,STEPE)) //EX02 EXEC PGM=IEFBR14, // COND=((00,NE,STEPA),(00,LE,STEPB),(04,NE,STEPC), // (00,LE,STEPD),(00,NE,STEPE)) //OX03 EXEC PGM=IEFBR14, // COND=((04,EQ,STEPE),(08,EQ,STEPE)) //EX03 EXEC PGM=IEFBR14, // COND=((00,LE,STEPA),(00,NE,STEPB),(04,NE,STEPC), // (08,NE,STEPD),(00,LE,OX03)) //NX04 EXEC PGM=IEFBR14, // COND=((00,LE,EX01),(00,LE,EX02),(00,LE,EX03)) //* //STEPF EXEC PGM=IEFBR14,COND=(00,LE,NX04) Case #3: //STEP0 EXEC PGM=IEFBR14 //STEPA EXEC PGM=IEFBR14,COND=(0,LE) //STEPB EXEC PGM=IEFBR14 //STEPC EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSIN DD * SET MAXCC EQ 4 //STEPD EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSIN DD * SET MAXCC EQ 8 //STEPE EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSIN DD * SET MAXCC EQ 4 //* //EX01 EXEC PGM=IEFBR14, // COND=((04,NE,STEPA),(00,NE,STEPB),(00,LE,STEPC), // (08,NE,STEPD),(00,LE,STEPE)) //EX02 EXEC PGM=IEFBR14, // COND=((00,NE,STEPA),(00,LE,STEPB),(04,NE,STEPC), // (00,LE,STEPD),(00,NE,STEPE)) //OX03 EXEC PGM=IEFBR14, // COND=((04,EQ,STEPE),(08,EQ,STEPE)) //EX03 EXEC PGM=IEFBR14, // COND=((00,LE,STEPA),(00,NE,STEPB),(04,NE,STEPC), // (08,NE,STEPD),(00,LE,OX03)) //NX04 EXEC PGM=IEFBR14, // COND=((00,LE,EX01),(00,LE,EX02),(00,LE,EX03)) //* //STEPF EXEC PGM=IEFBR14,COND=(00,LE,NX04) > > > >> 'IF ELSE ...' is to 'COND=' as 'mouse' is to 'keyboard'. >> >> > > I fail to see the analogy. > > Thanks, > gil MEMBER NAME *ISREDDE* )PANEL KEYLIST(ISRSPEC ISR) /* edit panel for action bars with hilighting */ )ATTR _ TYPE(INPUT) CAPS(OFF) INTENS(HIGH) FORMAT(&MIXED) # TYPE(FP) )BODY WIDTH(&ZWIDTH) EXPAND(//) %EDIT ------------------------------------/-/----------------------------------+ #Command ===>_ZCMD / / #Scroll ===>_Z % )INIT .HELP = ISR20000 .ZVARS = 'ZSCED' &MIXED = MIX /* SET FORMAT MIX */ IF (&ZPDMIX = N) /* IF EBCDIC MODE REQUESTED */ &MIXED = EBCDIC /* SET FORMAT EBCDIC */ VGET (ZSCED) PROFILE /* Fill Scroll Vars if */ IF (&ZSCED = ' ') /* Blank with page. */ &ZSCED = 'PAGE' /* */ )proc VPUT (ZSCED) PROFILE )END /* *Use of panel ISREDDE will result in better* */ /* *performance in the editor.* */ /* */ /* This panel can only be used in the following situations */ /* o No action bars are needed */ /* o No dynamic area or shadow variable is needed. */ /* o No Enhanced coloring is expected. */ /* o It will not be used with VIEW. */ /* */ /* 5655-042 (C) COPYRIGHT IBM CORP 1980, 1994 */ MEMBER NAME *ISRBROM* (no idea whether it was originally *ISRBROW*) )ATTR _ TYPE(INPUT) CAPS(OFF) INTENS(HIGH) ³ AREA(DYNAMIC) SCROLL(ON) EXTEND(ON) + TYPE(TEXT) INTENS(LOW) ¢ TYPE(OUTPUT) INTENS(HIGH) JUST(RIGHT) PAD(0) 01 TYPE(DATAIN) INTENS(HIGH) CAPS(ON) 02 TYPE(DATAOUT) INTENS(LOW) 03 TYPE(DATAIN) INTENS(HIGH) CAPS(ON) 04 TYPE(DATAOUT) INTENS(LOW) 05 TYPE(DATAOUT) INTENS(HIGH) 06 TYPE(DATAOUT) INTENS(LOW) )BODY WIDTH(80) %BROWSE - &ZDSN --------------------------------------------%ROW¢ZMLCR%OF¢ZMLTR+ %COMMAND ===>_ZCMD %SCROLL ===>_Z + &ZMLCOLS ³ZDATA ------------------------------------------------------------------------³ ³ ³ ³ -----------------------------------------------------------------------------³ )INIT .HELP = ISR13000 /* DEFAULT TUTORIAL NAME */ .ZVARS = 'ZSCML' /* SCROLL AMT VARIABLE NAME */ )PROC VPUT (ZSCML) PROFILE )END /* */ /* SEG(ISRBROM) COMP(BROWSE) PROD(MVS) */ /* */ /* CHANGE ACTIVITY */ /* L0= MEMLIST M230 860820 158590 : */ /* M1= MEMLIST M230 860923 158590 : FUNCTION TEST */ /* PTM00000184 */ /* */ /* CHANGED TWO LINES 2@M1C*/ /* 5665-402 (C) COPYRIGHT IBM CORP 1980, 1989 */ ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN