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

Baffling rexx allocation error


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

New User


Joined: 31 Jul 2008
Posts: 18
Location: Massachusetts

PostPosted: Mon Aug 04, 2008 5:57 pm
Reply with quote

Hi all, this is my first post on the boards and I'd like to say that I am a long time watcher and very interested at my problem that I cannot solve.

With this rexx exec I am getting this error which rattles my brain because there should be nothing wrong with it and I've used the same syntax in -many- other rexx programs. Any suggestions would be great.
Code:

IRX0555E The input or output file MEMDD is not allocated. It cannot be opened for I/O.                                                     
IRX0670E EXECIO error while trying to GET or PUT a record.



Here is my program it is very straight forward.

Watch its something so simple I proceed to palmface

Code:

/* REXX */                                                              00010000
"TCLEAR"                                                                00011026
/* This is a program to search through the following dsn's and pull out 00020001
   any of the lines that contain the characters "modcalls" or           00030001
   "setexits" only after the a line containing "//MMSTART" is located.  00030101
   It will search through the following dsn's that are put into the     00030201
   stem "mem."                                                          00030301
 */                                                                     00030401
/*trace r */                                                            00030529
/* this is where I will be outputting my data too */                    00032001
"ALLOCATE DA('mouse1.mouse2.mouse3') F(OUTDD) SHR REUSE"                00040011
                                                                        00041004
/* there are 30 members */                                              00041147
input = 'QCICS QCICS02 QCICS03 QCICS04 QCICS05 QCICS06 QCICS07 QCICS08  00041805
QCICS09 QCICS10 QCICS11 QCICS12 QCICS13 QCICS14 QCICS15 QCICS16 QCICS17 00042705
QCICS18 QCICS19 QCICS20 QCICS21 QCICS22 QCICS23 QCICS24 QCICS25 QCICS26 00043605
QCICS27 QCICS28 QPRSQ01 QPRSQ02'                                        00044005
                                                                        00044504
/* loading up the stem */                                               00051001
dsnf = 'ISS.mousey.PROD.PRODJCL( '                                      00052051
dsnb = ')'                                                              00053051
c=1                                                                     00053107
                                                                        00053247
  do until c = 31                                                       00053347
                                                                        00053447
   mem.c=word(input,c)                                                  00053547
   say mem.c                                                            00053650
                                                                        00053747
   c=c+1                                                                00053847
  end                                                                   00054047
                                                                        00059331
                                                                        00059504
ENDMEM = 'NO'                                                           00073817
c=1                                                                     00073908
DO UNTIL c = 31 /* 1 */                                                 00074047
  dsnn= dsnf³³mem.c³³dsnb                                               00074251
  "ALLOCATE DA('"dsnn"') F(MEMDD) SHR REUSE"                            00074751
                                                                        00075501
  DO UNTIL ENDMEM = 'YES' /* 2 */                                       00075647
                                                                        00075717
   "EXECIO 1 DISKR MEMDD"                                               00075947
                                                                        00076047
   IF RC=2 THEN ENDMEM = 'YES'                                          00076147
   ELSE                                                                 00076247
   DO /* 3 */                                                           00076347
                                                                        00076417
    PARSE PULL read                                                     00076547
                                                                        00076617
    if POS('//MMSTART',READ) > 0 then                                   00076947
    DO /* 4 */                                                          00077047
                                                                        00077517
     STREAMEND = 'FALSE'                                                00077647
     DO UNTIL STREAMEND = 'TRUE' /* 5 */                                00077747
      "EXECIO 1 DISKR MEMDD"                                            00077947
      IF RC=2 THEN STREAMEND = 'TRUE'                                   00078047
      ELSE                                                              00078147
      DO /* 6 */                                                        00078247
          PARSE PULL read2                                              00078547
                                                                        00078601
          IF POS('/*',read2) > 1 THEN STREAMEND = 'TRUE'                00078747
                                                                        00078847
          IF POS('MODCALL=',read2) THEN                                 00078947
           DO                                                           00079047
            removestring = word(read2,1)                                00079147
            push removestring                                           00079247
            "EXECIO 1 DISKW OUTDD"                                      00079347
           END                                                          00079447
                                                                        00079547
          IF POS('SETEXIT=',read2) THEN                                 00079647
           DO                                                           00079747
            removestring = word(read2,1)                                00079847
            push removestring                                           00079947
            "EXECIO 1 DISKW OUTDD"                                      00080047
           END                                                          00081047
                                                                        00082047
    END   /* 6 */                                                       00083147
   END /* 5 */                                                          00083247
  END /* 4 */                                                           00083347
 END /* 3 */                                                            00083447
 "EXECIO 0 DISKR MEMDD (FINIS"                                          00083547
 "FREE DD(memdd)"                                                       00083647
                                                                        00083737
END/* 2 */                                                              00083847
   c = c + 1                                                            00083908
END /* 1 */                                                             00084047
                                                                        00084101
  "EXECIO 0 DISKW OUTDD (FINIS"                                         00084225
  "EXECIO 0 DISKR MEMDD (FINIS"                                         00084325
  "FREE DD(outdd)"                                                      00084410
  "FREE DD(memdd)"                                                      00084510
/*trace off*/                                                           00084629
                                                                        00084701
return                                                                  00085028


[/code]
Back to top
View user's profile Send private message
expat

Global Moderator


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

PostPosted: Mon Aug 04, 2008 6:07 pm
Reply with quote

I'll bet that you are running in batch using IRXJCL
Back to top
View user's profile Send private message
relur197

New User


Joined: 31 Jul 2008
Posts: 18
Location: Massachusetts

PostPosted: Mon Aug 04, 2008 6:10 pm
Reply with quote

Negative good sir. When I am debugging I am issueing the "EX" line command and when I want to debug using batch I use IKJEFT01. But I have not even attempted to execute thru hand written JCL at this point in time. But in regards to your assumption, why would using IRXJCL make the difference?
Back to top
View user's profile Send private message
superk

Global Moderator


Joined: 26 Apr 2004
Posts: 4652
Location: Raleigh, NC, USA

PostPosted: Mon Aug 04, 2008 6:13 pm
Reply with quote

relur197, if you've been watching for some time, you should know that we usually require some run-time TRACE output that shows how and where the problem is occuring.
Back to top
View user's profile Send private message
enrico-sorichetti

Superior Member


Joined: 14 Mar 2007
Posts: 10873
Location: italy

PostPosted: Mon Aug 04, 2008 6:16 pm
Reply with quote

what is the return code of the ALLOCATE ??
Back to top
View user's profile Send private message
relur197

New User


Joined: 31 Jul 2008
Posts: 18
Location: Massachusetts

PostPosted: Mon Aug 04, 2008 6:17 pm
Reply with quote

Was compiling as soon as the thread started. here it is

trace


Code:


37 *-*  dsnn= dsnf||mem.c||dsnb
           >V>    "ISS.TECHAPP.PROD.PRODJCL("                                         
           >C>    "MEM.1"                                                             
           >V>    "QCICS"                                                             
           >O>    "ISS.TECHAPP.PROD.PRODJCL(QCICS"                                   
           >V>    ")"                                                                 
           >O>    "ISS.TECHAPP.PROD.PRODJCL(QCICS)"                                   
        38 *-*  "ALLOCATE DA('"dsnn"') F(MEMDD) SHR REUSE"                           
           >L>    "ALLOCATE DA('"                                                     
           >V>    "ISS.TECHAPP.PROD.PRODJCL(QCICS)"                                   
           >O>    "ALLOCATE DA('ISS.TECHAPP.PROD.PRODJCL(QCICS)"                     
           >L>    "') F(MEMDD) SHR REUSE"                                             
           >O>    "ALLOCATE DA('ISS.TECHAPP.PROD.PRODJCL(QCICS)') F(MEMDD) SHR REUS
    E"                                                                               
        40 *-*  trace off                                                             
    IRX0555E The input or output file MEMDD is not allocated. It cannot be opened f
or I/O.                                                                           
    IRX0670E EXECIO error while trying to GET or PUT a record.

Back to top
View user's profile Send private message
relur197

New User


Joined: 31 Jul 2008
Posts: 18
Location: Massachusetts

PostPosted: Mon Aug 04, 2008 6:20 pm
Reply with quote

All the signs of this error seem to be rooted that the member does not exist or the dsn does not exist which is not true. Because it is cataloged.
Back to top
View user's profile Send private message
enrico-sorichetti

Superior Member


Joined: 14 Mar 2007
Posts: 10873
Location: italy

PostPosted: Mon Aug 04, 2008 6:24 pm
Reply with quote

try under ISPF, or plain Tso to allocate the dataset ,
but please, what was the ALLOCATE return code
also turn on msg to see what is going on
Back to top
View user's profile Send private message
relur197

New User


Joined: 31 Jul 2008
Posts: 18
Location: Massachusetts

PostPosted: Mon Aug 04, 2008 7:36 pm
Reply with quote

I have found my own error. It was quite the palmface moment.

during the end of my 2nd loop I am closing out the file prematurly then attempting to read it again. Hence it is telling me that memdd is not allocated because it -really- isnt. When I moved this statement to the end of my 1st loop. Problems went away and normal execution progressed.

Thanks everyone for all the help.
Back to top
View user's profile Send private message
expat

Global Moderator


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

PostPosted: Mon Aug 04, 2008 8:04 pm
Reply with quote

Another C2KB interface error icon_biggrin.gif
Back to top
View user's profile Send private message
relur197

New User


Joined: 31 Jul 2008
Posts: 18
Location: Massachusetts

PostPosted: Mon Aug 04, 2008 8:14 pm
Reply with quote

Not sure what C2KB interface error means but I like PICNIC( Problem in chair not in computer) error
Back to top
View user's profile Send private message
expat

Global Moderator


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

PostPosted: Tue Aug 05, 2008 12:23 pm
Reply with quote

C2KB = Chair to KeyBoard
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 Compile Several JCL JOB Through one r... CLIST & REXX 4
No new posts Running REXX through JOB CLIST & REXX 13
No new posts Error to read log with rexx CLIST & REXX 11
No new posts Error when install DB2 DB2 2
No new posts isfline didnt work in rexx at z/OS ve... CLIST & REXX 7
Search our Forums:

Back to Top