On 25 Feb 2014 11:08:38 -0800, in bit.listserv.ibm-main you wrote:

If REXX supports invoking the sort, that is the simpler way to go.
While there were definite advantages to using compact E15 routines
when we had 22K partitions in DOS or even 4 - 6 meg address spaces in
MVS, with today's large areas the code for the program part is a
trivial portion of the overall execution space.  Where I might have
gone with going through the hoops to write E15 and E35 COBOL exits
under MVS, I wouldn't consider doing so starting with MVS/XA and
later.

Clark Morris 

>On Tue, 25 Feb 2014 08:43:05 -0800, Sri h Kolusu wrote:
>
>>..., it is quite easy to generate
>>another dynamic JCL to MERGE(Since the SORTING is already done) all these
>>into a single dataset in the same job I have shown.
>>
>>Either way isn't it true for any utility about the concatenation limits
>>unless OP writes a program to perform a SORT(bubble..) inside the program?
>> 
>OK.  Here's my highly Rexx-centric approach.  It allocates only one data set
>at a time, freeing it to allocate the next one.
>
>It uses no temporary disk files other than what DFSort may use, and I
>trust DFSort to do that very wisely.
>
>It invokes IEBGENER for each input data set.  I hope that if IEBGENER is
>in LPA the overhead is tolerable.  And, no, I don't perform a SORT(bubble..)
>inside the program.  I trust DFSort to do that much better than I could.
>
>Two Rexx EXECs.  Invoke the combination with "generpipe | pipesort".
>
>user@HOST: head -99 generpipe pipesort                                         
>              
>==> generpipe <==
>/* Rexx */ signal on novalue; /* ***************************
>   Doc: Use IEBGENER to dynamically concatenate an unlimited
>        number of data sets.
>*/
>SYSRC = SYSCALLS( 'ON' )
>address 'SYSCALL'
>'dup 1'  /* Alias for stdout.  */
>stdout = RETVAL
>'dup2 2 1'  /* Redirect Rexx output.  */
>trace R
>say 'stdout saved in' stdout
>
>RC = BPXWDYN( 'alloc dd(SYSPRINT) filedata(TEXT)' ,
>    'path(''/dev/fd/1'')        pathopts(OWRONLY) reuse msg(WTP)' )
>RC = BPXWDYN( 'alloc dd(SYSIN)    filedata(TEXT)' ,
>    'path(''/dev/./null'')      pathopts(ORDONLY) reuse msg(WTP)' )
>RC = BPXWDYN( 'alloc dd(SYSUT2) filedata(RECORD)' ,
>    'path(''/dev/fd/'stdout''') pathopts(OWRONLY) reuse msg(WTP)' )
>
>/* Arbitrary sample data sets.  Or, the names could be read from a file;
>   perhaps from output of LISTDS.
>*/
>call PipeIt 'SYS1.MACLIB(ACI)'
>call PipeIt 'SYS1.MACLIB(ATLAS)'
>call PipeIt 'SYS1.MACLIB(BDTDACKN)'
>/* ... (more ad lib. ... */
>return( RC )
>
>PipeIt:
>    RC = BPXWDYN( 'alloc dd(SYSUT1) shr dsn('''arg( 1 )''') reuse msg(WTP)' )
>    address 'LINKMVS' 'IEBGENER'
>    return( RC )
>/* ********************************************************* */
>
>==> pipesort <==
>/* Rexx */ signal on novalue; /* ***************************
>   Doc: Use stdin as SORTIN; stdout as SORTOUT.
>*/
>SYSRC = SYSCALLS( 'ON' )
>address 'SYSCALL'
>'dup 1'  /* Alias for stdout.  */
>stdout = RETVAL
>'dup2 2 1'  /* Redirect Rexx output.  */
>trace R
>say 'stdout saved in' stdout
>
>RC = BPXWDYN( 'alloc dd(SYSOUT)   filedata(TEXT)' ,
>    'path(''/dev/fd/1'')        pathopts(OWRONLY) reuse msg(WTP)' )
>
>RC = BPXWDYN( 'alloc dd(SYSIN)                    reuse msg(WTP)' )
>L.1 = '  SORT FIELDS=(73,8,CH,A)'  /* Sort by seqence number field.  */
>address 'MVS' 'EXECIO 1 DISKW SYSIN (finis stem L.'
>
>RC = BPXWDYN( 'alloc dd(SORTOUT)   filedata(TEXT)' ,
>    'path(''/dev/fd/'stdout''') pathopts(OWRONLY) reuse msg(WTP)' )
>RC = BPXWDYN( 'alloc dd(SORTIN)    filedata(RECORD)' ,
>    'recfm(F,B) lrecl(80) blksize(8000)' ,
>    'path(''/dev/fd/0'')        pathopts(ORDONLY) reuse msg(WTP)' )
>
>address 'LINKMVS' 'ICEMAN'
>return( RC )
>/* ********************************************************* */
>user@HOST: 
>
>-- 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

Reply via email to