IBM Mainframe Forum Index
 
Log In
 
IBM Mainframe Forum Index Mainframe: Search IBM Mainframe Forum: FAQ Register
 

How to eliminate GO TO


IBM Mainframe Forums -> COBOL Programming
Post new topic   Reply to topic
View previous topic :: View next topic  
Author Message
jaffarhussain

New User


Joined: 26 Nov 2010
Posts: 30
Location: Hyderabad

PostPosted: Mon Sep 19, 2011 5:40 pm
Reply with quote

Code:
IF  WS0Z-CCYYWK NOT      <  WS0Z-CCYYLW                     
         AND WS0Z-CCYYWK NOT  >  WS0Z-CCYYHI                     
*----->       DATE IS NOW WITHIN WINDOW                           
*----->       OVERLAY CENTURY VALUE.                             
             MOVE WS0Z-CENTWK TO DAT73C DAT83C DAT61C DATCTY     
     DAT23C                                                       
             GO TO F8120-Z.                                       
*----->       * ADD 200 FOR NEXT CENTURY                         
     ADD 200 TO WS0Z-CCYYWK.                                     
     IF  WS0Z-CCYYWK NOT      <  WS0Z-CCYYLW                     
         AND WS0Z-CCYYWK NOT  >  WS0Z-CCYYHI                     
*----->       DATE IS NOW WITHIN WINDOW                           
*----->       OVERLAY CENTURY VALUE.                             
             MOVE WS0Z-CENTWK TO DAT73C DAT83C DAT61C DATCTY     
     DAT23C                                                       
             GO TO F8120-Z.                                       
 F8120-Z.                                                         
     EXIT.
Back to top
View user's profile Send private message
Bill Woodger

Moderator Emeritus


Joined: 09 Mar 2011
Posts: 7309
Location: Inside the Matrix

PostPosted: Mon Sep 19, 2011 6:03 pm
Reply with quote

As well as tagging-on to the end of an old topic, you seem to have forgotten to include an actual question.

Edit: and code tags...
Back to top
View user's profile Send private message
dbzTHEdinosauer

Global Moderator


Joined: 20 Oct 2006
Posts: 6966
Location: porcelain throne

PostPosted: Mon Sep 19, 2011 6:14 pm
Reply with quote

as well as use CODE tags.
Back to top
View user's profile Send private message
Bill Woodger

Moderator Emeritus


Joined: 09 Mar 2011
Posts: 7309
Location: Inside the Matrix

PostPosted: Mon Sep 19, 2011 6:19 pm
Reply with quote

Code:
IF ( WS0Z-CCYYWK NOT      <  WS0Z-CCYYLW )
         AND ( WS0Z-CCYYWK NOT  >  WS0Z-CCYYHI )               
*----->       DATE IS NOW WITHIN WINDOW                           
*----->       OVERLAY CENTURY VALUE.                             
             MOVE WS0Z-CENTWK TO DAT73C DAT83C DAT61C DATCTY     
     DAT23C                                                       
ELSE
*----->       * ADD 200 FOR NEXT CENTURY                         
     ADD 200 TO WS0Z-CCYYWK
     IF  ( WS0Z-CCYYWK NOT      <  WS0Z-CCYYLW )                 
         AND ( WS0Z-CCYYWK NOT  >  WS0Z-CCYYHI )
*----->       DATE IS NOW WITHIN WINDOW                           
*----->       OVERLAY CENTURY VALUE.                             
             MOVE WS0Z-CENTWK TO DAT73C DAT83C DAT61C DATCTY     
     DAT23C                                                       
             END-IF
END-IF
.
 F8120-Z.                                                         
     EXIT.


Could be something like what you want.

Don't like the data-names, don't like the style/content of the comments, but such is life.

You are repeating a test, have LT & GT on same test (are you deliberately ignoring EQ?). So you could restructure the whole thing, if that is your question. You could.
Back to top
View user's profile Send private message
enrico-sorichetti

Superior Member


Joined: 14 Mar 2007
Posts: 10873
Location: italy

PostPosted: Mon Sep 19, 2011 6:51 pm
Reply with quote

this is one of the cases where a GOTO is acceptable,
if You indent for readability, AND YOU HAVE A few more IFs
the IF ELSE END_IF will indent too much
Back to top
View user's profile Send private message
Bill Woodger

Moderator Emeritus


Joined: 09 Mar 2011
Posts: 7309
Location: Inside the Matrix

PostPosted: Mon Sep 19, 2011 8:43 pm
Reply with quote

The code can be made more maintainable and self-documenting.


Code:

PERFORM XX-PROCESS-IN-DATE-WINDOW
ADD A-VALUE-OF-200-WHICH-MEANS-SOMETHING TO WS0Z-CCYYWK.                                     
PERFORM XX-PROCESS-IN-DATE-WINDOW

F8120-Z.                                                         
     EXIT.
XX-PROCESS-IN-DATE-WINDOW SECTION.

IF  ( WS0Z-CCYYWK NOT  <  WS0Z-CCYYLW )                     
AND ( WS0Z-CCYYWK NOT  >  WS0Z-CCYYHI )
         MOVE WS0Z-CENTWK                  TO DAT73C
                                              DAT83C
                                              DAT61C
                                              DATCTY     
                                              DAT23C                           
END-IF
.
Back to top
View user's profile Send private message
View previous topic :: :: View next topic  
Post new topic   Reply to topic View Bookmarks
All times are GMT + 6 Hours
Forum Index -> COBOL Programming

 


Similar Topics
Topic Forum Replies
No new posts eliminate dups in VB file DFSORT/ICETOOL 6
No new posts how to eliminate records from operati... DFSORT/ICETOOL 5
No new posts How to eliminate duplicate records - ... DFSORT/ICETOOL 7
No new posts How to eliminate unwanted record in t... DFSORT/ICETOOL 3
No new posts Eliminate last occurence in a record JCL & VSAM 10
Search our Forums:

Back to Top