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

Create all possible combinations of series of letters


IBM Mainframe Forums -> CLIST & REXX
Post new topic   Reply to topic
View previous topic :: View next topic  
Author Message
dbzTHEdinosauer

Global Moderator


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

PostPosted: Fri Jul 10, 2009 3:17 pm
Reply with quote

That's greate Bipin.

buuuuuuuuuuuuut, you have a typo:
outputstem.j = stem1.r || stem1.s || stem1.t || stem1.u || stem5.v


sorry, could not resist.
Back to top
View user's profile Send private message
bipinpeter

Active User


Joined: 18 Jun 2007
Posts: 213
Location: Cochin/Kerala/India

PostPosted: Fri Jul 10, 2009 3:31 pm
Reply with quote

Yes Dick you are right
Back to top
View user's profile Send private message
expat

Global Moderator


Joined: 14 Mar 2007
Posts: 8797
Location: Welsh Wales

PostPosted: Fri Jul 10, 2009 5:54 pm
Reply with quote

Just for a laugh I tried to get this to work with a variable number of characters icon_lol.gif
Yeah, work is a little slow today

A bit cack-handed ....... but it does work icon_eek.gif
Code:

/* REXX *** CARTESIAN JOIN OVER N STEMS                 
                                                       
"ALTLIB DEACTIVATE APPL(EXEC)"                         
"ALTLIB ACTIVATE   APPL(EXEC) DA('My REXX Library')"           
"FREE FI(INDATA)"                                       
"ALLOC FI(INDATA) DA('My REXX Library(CARTESA8)') SHR"         
"EXECIO * DISKR INDATA ( STEM STM0. FINIS"             
"FREE FI(INDATA)"                                       
                                                       
QUEUE """FREE FI(INDATA)"""                             
QUEUE """ALLOC FI(INDATA) DA('My REXX Library(CARTESA8)') SHR"""
QUEUE """EXECIO * DISKR INDATA ( STEM STM0. FINIS"""   
QUEUE """FREE FI(INDATA)"""                             
QUEUE "DO AA = 1 TO STM0.0"                             
QUEUE "  STM0.AA = STRIP(STM0.AA)"                     
QUEUE "END"                                             
QUEUE "DO AA = 1 TO STM0.0"                     
QUEUE "  DO AB = 1 TO STM0.0"                   
QUEUE '    INTERPRET "STM"AA"."AB "= STM0."AB '
QUEUE "  END"                                   
QUEUE "END"                                     
                                               
"FREE FI(NEXREXX)"                             
"ALLOC FI(NEXREXX) DA('My REXX Library(CARTESA9)') SHR"
                                               
DO AA = 1 TO STM0.0                             
  IF AA = 1 THEN DO                             
    OUT = "/*   TRACE R    */"                 
    QUEUE OUT                                   
  END                                           
  INTERPRET "OUT = 'DO A'"AA"' = 1 TO STM0.0'" 
  QUEUE OUT                                     
END                                             
"EXECIO" QUEUED() "DISKW NEXREXX"               
                                               
DO AA = 1 TO STM0.0                     
  IF AA = 1 THEN DO                     
    OUT = "OUTPT = STM0.A"AA"|| ,"       
    QUEUE OUT                           
  END                                   
  ELSE DO                               
    IF AA = STM0.0 THEN DO               
      OUT = "        STM0.A"AA           
      QUEUE OUT                         
      OUT = "SAY OUTPT"                 
      QUEUE OUT                         
    END                                 
    ELSE DO                             
      OUT = "        STM0.A"AA"|| ,"     
      QUEUE OUT                         
    END                                 
  END                                   
END                                     
                                         
DO AA = 1 TO STM0.0                       
  OUT = "END"                             
  QUEUE OUT                               
END                                       
"EXECIO" QUEUED() "DISKW NEXREXX ( FINIS"
                                         
CALL CARTESA9                             
                                         
EXIT                                     
Back to top
View user's profile Send private message
Pedro

Global Moderator


Joined: 01 Sep 2006
Posts: 2547
Location: Silicon Valley

PostPosted: Fri Jul 10, 2009 9:24 pm
Reply with quote

In Bipinpeter's example:

Code:
outputstem.0 = 1
...
            j = outputstem.0
            outputstem.j = stem1.r || stem1.s || stem1.t || stem1.u || stem5.v
            outputstem.0 = outputstem.0 + 1
....
outputstem.0 = outputstem.0 - 1


I suggest starting with 0 and only incrementing when you have the next value. Then you do not need to subtract:
Code:
j = 0
...
            j = j + 1
            outputstem.j = stem1.r || stem1.s || stem1.t || stem1.u || stem1.v
....
outputstem.0 = j
[/code]
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 -> CLIST & REXX

 


Similar Topics
Topic Forum Replies
No new posts How to create a list of SAR jobs with... CA Products 3
No new posts create rexx edit Macro that edits the... CLIST & REXX 3
No new posts COBOL - create and write to output fi... COBOL Programming 0
No new posts Best way to create an automated line ... TSO/ISPF 3
No new posts FD Section to Create FB or Vb File Dy... COBOL Programming 1
Search our Forums:

Back to Top