IKJEFT1A utility help needed



JES, JES2, JCL utilities, IDCAMS, Compile & Run JCLs, PROCs etc...

IKJEFT1A utility help needed

Postby gokulNmf » Tue Oct 04, 2011 7:12 pm

Hi All,
I am running a rexx pgm in batch mode using the utility Ikjeft1a (Please find the code below), the issue is the rexx pgm needs the input, which is 80 bytes long. can anyone help me how to continue the input in the next line.
i tired : -, comma, spaces,
( xxxx -
xxx),
' xxxxx
xxxx'
none was working.


HELLO - rexx pgm
XXXXXXXXXXX- is the input to the rexx
GARUL.COMPARE.ICETOOL.FILE1 - is the input file.

 //TSOBATCH EXEC PGM=IKJEFT1A                                           
 //SYSEXEC DD DSN=GARUL.PRICING.REXXLIB,DISP=SHR                       
 //SYSPRINT DD SYSOUT=*                                                 
 //SYSTSPRT DD SYSOUT=*                                                 
 //INFILE01 DD DSN=GARUL.COMPARE.ICETOOL.FILE1,DISP=SHR               
 //SYSTSIN DD *                                                         
  %HELLO                                                                 
   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 //*                                                                     
Cheers,
Gokul
User avatar
gokulNmf
 
Posts: 118
Joined: Sat Mar 28, 2009 6:41 pm
Location: India
Has thanked: 2 times
Been thanked: 0 time

Re: Ikjeft1a utility help needed.

Postby MrSpock » Tue Oct 04, 2011 7:48 pm

I pulled this from the TSO/E User's Guide:

SYSTSIN DD Statement

The SYSTSIN DD statement is used to specify that the data to follow consists of executable commands and/or subcommands. For example, to indicate to the system that all data following this statement is to be used as input, until the system encounters an input delimiter, such as the characters /* or the DLM operand, specify:

//SYSTSIN DD *If any of the input statements start with the characters //, use the DD DATA statement instead.

To indicate to the system that all data following this statement is to be used as input, including statements that start with the characters //, until an input delimiter (/* or DLM) is found, specify:

//SYSTSIN DD DATATo indicate to the system that all the input data can be found in data set PREFIX.INPUT.DATA, specify:

//SYSTSIN DD DSNAME=PREFIX.INPUT.DATAThe SYSTSIN and SYSTSPRT DD statements can refer to a sequential data set or a member of a partitioned data set.
It is recommended that the SYSTSIN DD be defined as a fixed block format data set, with an LRECL of 80.

If SYSTSIN is a fixed length data set (FB), the last 8 bytes of the record will be treated as a sequence number and ignored.

If SYSTSIN is a fixed length data set with ASA control characters (FBA), the first byte of the record will be treated as a carriage control character and ignored.

If SYSTSIN is a variable length data set (VB), the first 8 bytes of the record will be treated as a sequence number and ignored.

If SYSTSIN is a variable length data set with ASA control characters (VBA), the first 9 bytes of the record will be treated as a sequence number, followed by a carriage control character and ignored.

You cannot refer to concatenated data sets on the SYSTSIN DD statement. Each command or subcommand must begin on a separate statement.


So, apparently the longest single record if your SYSTSIN is allocated as RECFM=FB, LRECL=80, will be 72 characters. I'd say either go with a larger allocation (instream data can be up to 254 characters), pass the data as PARM= instead of using SYSTSIN, or logically break it up into two records.
User avatar
MrSpock
Global moderator
 
Posts: 807
Joined: Wed Jun 06, 2007 9:37 pm
Location: Raleigh NC USA
Has thanked: 0 time
Been thanked: 4 times

Re: Ikjeft1a utility help needed.

Postby steve-myers » Wed Oct 05, 2011 12:29 am

There are two parts to this topic: a Rexx question about the mechanics of reading an input dataset with multiple records, and how to provide a logical input record to TSO that is longer than 73 or 80 bytes. I won't respond to the Rexx question as I don't write very much Rexx, but I can respond to the TSO input question.

It's pretty much forgotten now, but I'm sure it's discussed in the TSO/E User's Guide that you can provide very long input lines by terminating a logical input line with a - or + character and continue the logical line on the next input line. I believe there is a maximum length, but I've never encountered it. Like so -
//A       EXEC PGM=IKJEFT1A         
//SYSTSPRT DD  SYSOUT=*             
//SYSTSIN  DD *                     
LISTD ('SYS1.LINKLIB' 'SYS1.LPALIB' -
'SYS1.SVCLIB' 'SYS1.PROCLIB')
/*

I just ran that today, and it ran fine. There is a difference between using the - or + character that you can find out yourself in the TSO/E User's Guide.
steve-myers
Global moderator
 
Posts: 2105
Joined: Thu Jun 03, 2010 6:21 pm
Has thanked: 4 times
Been thanked: 243 times

Re: Ikjeft1a utility help needed.

Postby Akatsukami » Wed Oct 05, 2011 2:24 am

Would not be wiser, in this case, to read the data from SYSIN, rather than trying to get it (presumably as a parameter) from SYSTSIN?
"You have sat too long for any good you have been doing lately ... Depart, I say; and let us have done with you. In the name of God, go!" -- what I say to a junior programmer at least once a day
User avatar
Akatsukami
Global moderator
 
Posts: 1058
Joined: Sat Oct 16, 2010 2:31 am
Location: Bloomington, IL
Has thanked: 6 times
Been thanked: 51 times

Re: Ikjeft1a utility help needed.

Postby gokulNmf » Thu Oct 13, 2011 7:21 pm

@ Akatsukami: i am not aware of that :oops: , can you please let me know where can i find more info of, getting input through sysin instead of systsin?

@steve-myers & MrSpock: Thank you, i made it by passing the input through a DS with required length.
Cheers,
Gokul
User avatar
gokulNmf
 
Posts: 118
Joined: Sat Mar 28, 2009 6:41 pm
Location: India
Has thanked: 2 times
Been thanked: 0 time

Re: Ikjeft1a utility help needed.

Postby NicC » Thu Oct 13, 2011 7:29 pm

SYSIN is just another DDname to your program - you used a different DDname, that is all
The problem I have is that people can explain things quickly but I can only comprehend slowly.
Regards
Nic
NicC
Global moderator
 
Posts: 3025
Joined: Sun Jul 04, 2010 12:13 am
Location: Pushing up the daisies (almost)
Has thanked: 4 times
Been thanked: 136 times

Re: Ikjeft1a utility help needed.

Postby gokulNmf » Fri Oct 14, 2011 11:32 am

Hey NicC,
Thanks for the reply, i would like to know how to give the SYSTSIN parameters through SYSIN as input?. The confusion i am having is: the utitly will check the systsin or sysin for the input?
Cheers,
Gokul
User avatar
gokulNmf
 
Posts: 118
Joined: Sat Mar 28, 2009 6:41 pm
Location: India
Has thanked: 2 times
Been thanked: 0 time

Re: Ikjeft1a utility help needed.

Postby enrico-sorichetti » Fri Oct 14, 2011 11:41 am

it seemed to me that MsSpock quote was enlightening enough :?

IKJEFT01 and friends ( IKJEFT1x ) is NOT an utility
it is the TMP aka TERMINAL MONITOR PROGRAM...
it sits there doing nothing until a recognized TSO <command> is entered/read
as such the only data it knows about are the <command> strings,

the ONLY ddnames needed are
SYSTSIN for the command and all the related parameters
and SYSTSPRT for the command related output

it is recommended to read any other data thru a different DDNAME

All You might want to know about IKJEFT01 can be easily found here
http://publibz.boulder.ibm.com/cgi-bin/ ... s/IKJ4BK90
not the latest one but more than enough as an introductory reading
cheers
enrico
When I tell somebody to RTFM or STFW I usually have the page open in another tab/window of my browser,
so that I am sure that the information requested can be reached with a very small effort
enrico-sorichetti
Global moderator
 
Posts: 2994
Joined: Fri Apr 18, 2008 11:25 pm
Has thanked: 0 time
Been thanked: 164 times

Re: Ikjeft1a utility help needed.

Postby steve-myers » Fri Oct 14, 2011 9:40 pm

gokulNmf wrote:Hey NicC,
Thanks for the reply, i would like to know how to give the SYSTSIN parameters through SYSIN as input?. The confusion i am having is: the utitly will check the systsin or sysin for the input?
IKJEFT01 and it's friends are the TSO Terminal Monitor Program. When it is called in a batch job it reads its commands only from the dataset specified by the DD statement with DD name SYSTSIN and writes line mode terminal output to the dataset specified by the DD statement with the SYSTSPRT DD name. There are no alternatives. What I thnk you want to do can't be done firectly, though you can play JCL games. i haven't tried this, but I think it will word.
//A       EXEC PGM=IKJEFT1A
//SYSTSPRT DD  DDNAME=SYSPRINT
//SYSTSIN  DD  DDNAME=SYSIN
//SYSPRINT DD  SYSOUT=*
//SYSIN    DD  *
LISTD 'SYS1.LINKLIB' ME
steve-myers
Global moderator
 
Posts: 2105
Joined: Thu Jun 03, 2010 6:21 pm
Has thanked: 4 times
Been thanked: 243 times

Re: Ikjeft1a utility help needed.

Postby Akatsukami » Fri Oct 14, 2011 10:12 pm

gokulNmf wrote:@ Akatsukami: i am not aware of that :oops: , can you please let me know where can i find more info of, getting input through sysin instead of systsin?

Sorry to have left you hanging; occasionally my managers expect me to justify my salary by doing some actural work.

SYSIN can be treated just like any other file, and read with EXECIO or a third-party package (we have such a package here, but never bother with it for PS data sets, as it gives no advantage over EXECIO unless we have to run in a non-TSO address space). A very simple exec that just echoes its input:
/* Rexx */                                     
/* Written Heisei 23.10.14 by Akatsukami-sama */
  trace o                                       
  "EXECIO 1 DISKR SYSIN"                       
                                               
  do while (rc=0)                               
    parse pull line                             
    say "I say unto you:" line                 
    "EXECIO 1 DISKR SYSIN"                     
  end                                           
                                               

The JCL to run it:
//STEPONLY EXEC   PGM=IKJEFT1B               
//SYSPROC  DD     DSN=SHGB.WORK.CLIST,DISP=SHR
//SYSPRINT DD     SYSOUT=*                   
//SYSTSPRT DD     SYSOUT=*                   
//SYSTSIN  DD     *                           
   %FOO57                                     
//SYSIN    DD     *                           
i tired : -, comma, spaces,                   
( xxxx -                                     
xxx),                                         
' xxxxx                                       
xxxx'                                         
none was working.                             

And the SYSTSPRT output:
1READY                                       
    %FOO57                                   
 I say unto you: i tired : -, comma, spaces, 
 I say unto you: ( xxxx -                     
 I say unto you: xxx),                       
 I say unto you: ' xxxxx                     
 I say unto you: xxxx'                       
 I say unto you: none was working.           
 READY                                       
 END                                         
"You have sat too long for any good you have been doing lately ... Depart, I say; and let us have done with you. In the name of God, go!" -- what I say to a junior programmer at least once a day
User avatar
Akatsukami
Global moderator
 
Posts: 1058
Joined: Sat Oct 16, 2010 2:31 am
Location: Bloomington, IL
Has thanked: 6 times
Been thanked: 51 times

Next

Return to JCL

 


  • Related topics
    Replies
    Views
    Last post