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

Reply via email to