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

ISREDIT macro command doubt


IBM Mainframe Forums -> TSO/ISPF
Post new topic   This topic is locked: you cannot edit posts or make replies.
View previous topic :: View next topic  
Author Message
sakrat

Active User


Joined: 05 Feb 2014
Posts: 164
Location: India

PostPosted: Wed Feb 19, 2014 12:33 pm
Reply with quote

sureshpathi10 wrote:
Could you also post all the output you've got from 'SAY' command?


140 *-* DO M=1 TO K
>>> "1"
>>> "3"
141 *-* SAY "FROM" FROM_VAR
>>> "FROM &HLQ."
FROM &HLQ.
142 *-* SAY "TO" TO_VAR
>>> "TO TRE"
TO TRE
143 *-* OUTPUT1.M=TRANSLATE(OUTPUT.M,FROM_VAR,TO_VAR)
>>> "&HLQ..&SS&LNV..JCL2"
144 *-* SAY OUTPUT1.M

>>> "&HLQ..&SS&LNV..JCL2"
&HLQ..&SS&LNV..JCL2
145 *-* END
140 *-* DO M=1 TO K
141 *-* SAY "FROM" FROM_VAR
>>> "FROM &HLQ."
FROM &HLQ.
142 *-* SAY "TO" TO_VAR
>>> "TO TRE"
TO TRE
143 *-* OUTPUT1.M=TRANSLATE(OUTPUT.M,FROM_VAR,TO_VAR)
>>> "&HLQ..&SS&LNV..JCL4"
144 *-* SAY OUTPUT1.M
>>> "&HLQ..&SS&LNV..JCL4"
&HLQ..&SS&LNV..JCL4
145 *-* END
140 *-* DO M=1 TO K
141 *-* SAY "FROM" FROM_VAR
>>> "FROM &HLQ."
FROM &HLQ.
142 *-* SAY "TO" TO_VAR
>>> "TO TRE"
TO TRE
143 *-* OUTPUT1.M=TRANSLATE(OUTPUT.M,FROM_VAR,TO_VAR)
>>> "&HLQ..&SS&LNV..JCL3"
144 *-* SAY OUTPUT1.M
>>> "&HLQ..&SS&LNV..JCL3"[/code]
Back to top
View user's profile Send private message
sakrat

Active User


Joined: 05 Feb 2014
Posts: 164
Location: India

PostPosted: Wed Feb 19, 2014 12:38 pm
Reply with quote

Swathi Muralidharan wrote:
sureshpathi10 wrote:
Could you also post all the output you've got from 'SAY' command?


140 *-* DO M=1 TO K
>>> "1"
>>> "3"
141 *-* SAY "FROM" FROM_VAR
>>> "FROM &HLQ."
FROM &HLQ.
142 *-* SAY "TO" TO_VAR
>>> "TO TRE"
TO TRE
143 *-* OUTPUT1.M=TRANSLATE(OUTPUT.M,FROM_VAR,TO_VAR)
>>> "&HLQ..&SS&LNV..JCL2"
144 *-* SAY OUTPUT1.M

>>> "&HLQ..&SS&LNV..JCL2"
&HLQ..&SS&LNV..JCL2
145 *-* END
140 *-* DO M=1 TO K
141 *-* SAY "FROM" FROM_VAR
>>> "FROM &HLQ."
FROM &HLQ.
142 *-* SAY "TO" TO_VAR
>>> "TO TRE"
TO TRE
143 *-* OUTPUT1.M=TRANSLATE(OUTPUT.M,FROM_VAR,TO_VAR)
>>> "&HLQ..&SS&LNV..JCL4"
144 *-* SAY OUTPUT1.M
>>> "&HLQ..&SS&LNV..JCL4"
&HLQ..&SS&LNV..JCL4
145 *-* END
140 *-* DO M=1 TO K
141 *-* SAY "FROM" FROM_VAR
>>> "FROM &HLQ."
FROM &HLQ.
142 *-* SAY "TO" TO_VAR
>>> "TO TRE"
TO TRE
143 *-* OUTPUT1.M=TRANSLATE(OUTPUT.M,FROM_VAR,TO_VAR)
>>> "&HLQ..&SS&LNV..JCL3"
144 *-* SAY OUTPUT1.M
>>> "&HLQ..&SS&LNV..JCL3"[/code]



Code:

/*REXX*/
"ISREDIT MACRO"
TRACE (R)
TEMP="NEW,CATLG,DELETE"
TEMP2=",CATLG,DELETE"
SETVAR="SET"
K=0
I=1
J=1
"ISREDIT SEEK ALL '"TEMP"' "
"ISREDIT (TOT) = SEEK_COUNTS"
CALL NEWPGM
"ISREDIT SEEK ALL WORD '"TEMP2"'"
"ISREDIT (CNT) = SEEK_COUNTS"
CALL CATLGPGM
"ISREDIT SEEK ALL WORD '"SETVAR"' "
"ISREDIT (CNTR) = SEEK_COUNTS"
CALL CHNGSYMB
INSLIN=K
TEMP1=EXEC
"ISREDIT FIND  FIRST '"TEMP1"'"
IF RC=0 THEN DO
"ISREDIT (NUM) = LINENUM .ZCSR"
NUM1=NUM-5
END
"ISREDIT CURSOR = "NUM1" 1"
"ISREDIT (LINE2) = LINE .ZCSR"
RES1=TOT+CNT+3
I=1
"ISREDIT LINE_BEFORE .ZCSR = '//JS0010   EXEC PGM=IDCAMS'"
"ISREDIT LINE_BEFORE .ZCSR = '//SYSPRINT DD   SYSOUT=*'"
"ISREDIT LINE_BEFORE .ZCSR = '//SYSOUT   DD   SYSOUT=*'"
"ISREDIT LINE_BEFORE .ZCSR = '//SYSIN    DD   *'"
DO WHILE INSLIN > 0
OUT='       ' || DELETE ||' ' || OUTPUT.I
"ISREDIT LINE_BEFORE .ZCSR = '"OUT"' "
INSLIN=INSLIN-1
I=I+1
END
INS="       SET MAXCC=0"
"ISREDIT LINE_BEFORE .ZCSR = '"INS"' "
"ISREDIT LINE_BEFORE .ZCSR = '/*'"
"ISREDIT END"
EXIT
/*  CALLS NEWPGM WHEN TEMP IS "NEW,CATLG,DELETE" */
NEWPGM:
I=1
COUNT=TOT
COUNT1=TOT
DO WHILE COUNT > 0
IF RC=0 THEN DO
"ISREDIT (VAL) = LINENUM .ZCSR"
VAL1=VAL-1
"ISREDIT (LINE) = LINE " VAL1
      INPUT.I = STRIP(LINE)
      PARSE VALUE "'"INPUT.I"'" WITH PREC ','
      OUT=POS('=',PREC)
      RES=SUBSTR(PREC,OUT+1)
   PARSE VALUE "'"RES"'" WITH PRE '(' POST ')'
   IF POST = "" THEN DO
     OUTPUT.I=RES
     K=K+1
     COUNT=COUNT-1
     I=I+1
      J=I
    END
    ELSE DO
        IF DATATYPE(POST) == NUM THEN DO
            NOP
            COUNT=COUNT-1
        END
        ELSE DO
            OUTPUT.I=RES
            K=K+1
            COUNT=COUNT-1
            I=I+1
            J=I
        END
    END
 END
"ISREDIT FIND NEXT '"TEMP"' "
END
RETURN
/* CALLS CATLGPGM WHEN TEMP IS ",CATLG,DELETE" */
CATLGPGM:
COUNT=CNT
COUNT1=CNT
DO WHILE COUNT > 0
IF RC=0 THEN DO
"ISREDIT (VAL) = LINENUM .ZCSR"
VAL1=VAL-1
"ISREDIT (LINE) = LINE " VAL1
      INPUT.J = STRIP(LINE)
      PARSE VALUE "'"INPUT.J"'" WITH PREC ','
      OUT=POS('=',PREC)
      RES=SUBSTR(PREC,OUT+1)
     OUTPUT.J=RES
  PARSE VALUE "'"RES"'" WITH PRE '(' POST ')'
  IF POST = "" THEN DO
    OUTPUT.J=RES
    K=K+1
    COUNT=COUNT-1
    J=J+1
  END
  ELSE DO
      IF DATATYPE(POST) == NUM THEN DO
          NOP
          COUNT=COUNT-1
      END
      ELSE DO
          OUTPUT.J=RES
          K=K+1
            COUNT=COUNT-1
            J=J+1
        END
    END
 END
 "ISREDIT FIND NEXT '"TEMP2"' "
 END
 RETURN
 /* CHANGES ALL THE SYMBOLIC PARAMETER TO NORMAL VARIABLES */
 CHNGSYMB:
 L=0
 DO WHILE CNTR > 0
 IF RC=0 THEN DO
        L=L+1
        "ISREDIT (LIN2) = LINE .ZCSR"
        STEM1.L = STRIP(LIN2)
       PARSE VAR STEM1.L '//' 'SET' STEM2.L '=' STEM3.L
       STEM2.L=STRIP(STEM2.L)
       STEM3.L=STRIP(STEM3.L)
       "ISREDIT FIND NEXT '"SETVAR"' "
       CNTR=CNTR-1
END
DO I=1 TO L
  SAY "L VALUE" L
  FROM_VAR='&'||STEM2.I||'.'
  TO_VAR = STEM3.I
  SAY "J VALUE" J
  DO M=1 TO K
    SAY "FROM" FROM_VAR
    SAY "TO" TO_VAR
    OUTPUT.M=TRANSLATE(OUTPUT.M,FROM_VAR,TO_VAR)
    SAY OUTPUT.M
  END
END
RETURN


Above is entire code......
Back to top
View user's profile Send private message
sureshpathi10

Active User


Joined: 03 May 2010
Posts: 154
Location: Kuala Lumpur

PostPosted: Wed Feb 19, 2014 12:41 pm
Reply with quote

Could you changes from
Code:
 OUTPUT1.M=TRANSLATE(OUTPUT.M,FROM_VAR,TO_VAR)

to
Code:
 OUTPUT1.M=TRANSLATE(OUTPUT.M,TO_VAR,FROM_VAR)
Back to top
View user's profile Send private message
sakrat

Active User


Joined: 05 Feb 2014
Posts: 164
Location: India

PostPosted: Wed Feb 19, 2014 12:58 pm
Reply with quote

sureshpathi10 wrote:
Could you changes from
Code:
 OUTPUT1.M=TRANSLATE(OUTPUT.M,FROM_VAR,TO_VAR)

to
Code:
 OUTPUT1.M=TRANSLATE(OUTPUT.M,TO_VAR,FROM_VAR)


I changed it and the final output which i am getting is like this:

Code:

    DELETE TRV   T  TV04  JCV2
    DELETE TRV   T  TV04  JCV4
    DELETE TRV   T  TV04  JCV3
Back to top
View user's profile Send private message
sureshpathi10

Active User


Joined: 03 May 2010
Posts: 154
Location: Kuala Lumpur

PostPosted: Wed Feb 19, 2014 1:08 pm
Reply with quote

Sorry.. My bad.. TRANSLATE function would change the string char by char....

can you try with this code ?
Code:
DO I=1 TO L
  SAY "L VALUE" L
  FROM_VAR='&'||STEM2.I||'.'
  TO_VAR = STEM3.I
  SAY "J VALUE" J
  DO M=1 TO K
    SAY "FROM" FROM_VAR
    SAY "TO" TO_VAR
    POS1=POS(FROM_VAR,OUTPUT.M);
    IF POS1 > 1 THEN
       OUTPUT.M=SUBSTR(OUTPUT.M,1,POS1-1)||TO_VAR||SUBSTR(OUTPUT.M,POS1+LENGTH(FROM_VAR))
    IF POS1 = 1 THEN
       OUTPUT.M=TO_VAR||SUBSTR(OUTPUT.M,LENGTH(FROM_VAR)+1)
    SAY OUTPUT.M
  END
END
Back to top
View user's profile Send private message
sakrat

Active User


Joined: 05 Feb 2014
Posts: 164
Location: India

PostPosted: Wed Feb 19, 2014 1:10 pm
Reply with quote

sureshpathi10 wrote:
Sorry.. My bad.. TRANSLATE function would change the string char by char....

can you try with this code ?
Code:
DO I=1 TO L
  SAY "L VALUE" L
  FROM_VAR='&'||STEM2.I||'.'
  TO_VAR = STEM3.I
  SAY "J VALUE" J
  DO M=1 TO K
    SAY "FROM" FROM_VAR
    SAY "TO" TO_VAR
    POS1=POS(FROM_VAR,OUTPUT.M);
    IF POS1 > 1 THEN
       OUTPUT.M=SUBSTR(OUTPUT.M,1,POS1-1)||TO_VAR||SUBSTR(OUTPUT.M,POS+LENGTH(FROM_VAR))
    ELSE
       OUTPUT.M=TO_VAR||SUBSTR(OUTPUT.M,LENGTH(FROM_VAR)+1)
    SAY OUTPUT.M
  END
END


Yes you are right i analysed it and came to a conclusion just now and you replied the same....it is changing whereever the letter is found....i asked about that in yesterday's post itself but for got it afterwards...will check this code and let you know....
Back to top
View user's profile Send private message
sureshpathi10

Active User


Joined: 03 May 2010
Posts: 154
Location: Kuala Lumpur

PostPosted: Wed Feb 19, 2014 1:12 pm
Reply with quote

There is a small change in my previous post.. I edited it....

Code:
DO I=1 TO L
  SAY "L VALUE" L
  FROM_VAR='&'||STEM2.I||'.'
  TO_VAR = STEM3.I
  SAY "J VALUE" J
  DO M=1 TO K
    SAY "FROM" FROM_VAR
    SAY "TO" TO_VAR
    POS1=POS(FROM_VAR,OUTPUT.M);
    IF POS1 > 1 THEN
       OUTPUT.M=SUBSTR(OUTPUT.M,1,POS1-1)||TO_VAR||SUBSTR(OUTPUT.M,POS1+LENGTH(FROM_VAR))
    IF POS1 = 1 THEN
       OUTPUT.M=TO_VAR||SUBSTR(OUTPUT.M,LENGTH(FROM_VAR)+1)
    SAY OUTPUT.M
  END
END
Back to top
View user's profile Send private message
sakrat

Active User


Joined: 05 Feb 2014
Posts: 164
Location: India

PostPosted: Wed Feb 19, 2014 1:28 pm
Reply with quote

sureshpathi10 wrote:
There is a small change in my previous post.. I edited it....

Code:
DO I=1 TO L
  SAY "L VALUE" L
  FROM_VAR='&'||STEM2.I||'.'
  TO_VAR = STEM3.I
  SAY "J VALUE" J
  DO M=1 TO K
    SAY "FROM" FROM_VAR
    SAY "TO" TO_VAR
    POS1=POS(FROM_VAR,OUTPUT.M);
    IF POS1 > 1 THEN
       OUTPUT.M=SUBSTR(OUTPUT.M,1,POS1-1)||TO_VAR||SUBSTR(OUTPUT.M,POS1+LENGTH(FROM_VAR))
    IF POS1 = 1 THEN
       OUTPUT.M=TO_VAR||SUBSTR(OUTPUT.M,LENGTH(FROM_VAR)+1)
    SAY OUTPUT.M
  END
END


The output comes properly but it comes as TRE.&SSDV04.JCL1
The problem is it checks for &SS. which is not found so POS1is 0 and hence no changes takes place....instead of using POS can i use INDEX or anyother syntax...????
Back to top
View user's profile Send private message
sureshpathi10

Active User


Joined: 03 May 2010
Posts: 154
Location: Kuala Lumpur

PostPosted: Wed Feb 19, 2014 1:39 pm
Reply with quote

Even 'INDEX' function will work same as this.

I'm not sure, whether symbolic parameter can come without '.' at end.

But still, you may check one more time for without '.'

Code:
DO I=1 TO L
  FROM_VAR='&'||STEM2.I||'.'
  TO_VAR = STEM3.I
  DO M=1 TO K
    POS1=POS(FROM_VAR,OUTPUT.M);
    IF POS1 > 1 THEN
       OUTPUT.M=SUBSTR(OUTPUT.M,1,POS1-1)||TO_VAR||SUBSTR(OUTPUT.M,POS1+LENGTH(FROM_VAR))
    IF POS1 = 1 THEN
       OUTPUT.M=TO_VAR||SUBSTR(OUTPUT.M,LENGTH(FROM_VAR)+1)
    SAY OUTPUT.M
  END
  FROM_VAR='&'||STEM2.I
  DO M=1 TO K
    POS1=POS(FROM_VAR,OUTPUT.M);
    IF POS1 > 1 THEN
       OUTPUT.M=SUBSTR(OUTPUT.M,1,POS1-1)||TO_VAR||SUBSTR(OUTPUT.M,POS1+LENGTH(FROM_VAR))
    IF POS1 = 1 THEN
       OUTPUT.M=TO_VAR||SUBSTR(OUTPUT.M,LENGTH(FROM_VAR)+1)
    SAY OUTPUT.M
  END

END
Back to top
View user's profile Send private message
sakrat

Active User


Joined: 05 Feb 2014
Posts: 164
Location: India

PostPosted: Wed Feb 19, 2014 3:13 pm
Reply with quote

sureshpathi10 wrote:
Even 'INDEX' function will work same as this.

I'm not sure, whether symbolic parameter can come without '.' at end.

But still, you may check one more time for without '.'

Code:
DO I=1 TO L
  FROM_VAR='&'||STEM2.I||'.'
  TO_VAR = STEM3.I
  DO M=1 TO K
    POS1=POS(FROM_VAR,OUTPUT.M);
    IF POS1 > 1 THEN
       OUTPUT.M=SUBSTR(OUTPUT.M,1,POS1-1)||TO_VAR||SUBSTR(OUTPUT.M,POS1+LENGTH(FROM_VAR))
    IF POS1 = 1 THEN
       OUTPUT.M=TO_VAR||SUBSTR(OUTPUT.M,LENGTH(FROM_VAR)+1)
    SAY OUTPUT.M
  END
  FROM_VAR='&'||STEM2.I
  DO M=1 TO K
    POS1=POS(FROM_VAR,OUTPUT.M);
    IF POS1 > 1 THEN
       OUTPUT.M=SUBSTR(OUTPUT.M,1,POS1-1)||TO_VAR||SUBSTR(OUTPUT.M,POS1+LENGTH(FROM_VAR))
    IF POS1 = 1 THEN
       OUTPUT.M=TO_VAR||SUBSTR(OUTPUT.M,LENGTH(FROM_VAR)+1)
    SAY OUTPUT.M
  END

END



Hi,
Thanks a lot for helping me....Now the code is working fine...without your help i could have done this tool.....would have stuck up with the one code that works without symbolic parameter.....thanks..... icon_smile.gif icon_smile.gif now will try to insert the step in this below mentioned case :

when a cursor is placed in a line and enter key is pressed the delete step should be inserted.... At present the step will be inserted 5 lines before the first EXEC....now will try to change it....
Back to top
View user's profile Send private message
sureshpathi10

Active User


Joined: 03 May 2010
Posts: 154
Location: Kuala Lumpur

PostPosted: Wed Feb 19, 2014 3:18 pm
Reply with quote

Please create a new topic with more information for any further questions..
Back to top
View user's profile Send private message
View previous topic :: :: View next topic  
Post new topic   This topic is locked: you cannot edit posts or make replies. View Bookmarks
All times are GMT + 6 Hours
Forum Index -> TSO/ISPF Goto page Previous  1, 2, 3

 


Similar Topics
Topic Forum Replies
No new posts RACF - Rebuild SETROPTS command which... All Other Mainframe Topics 3
No new posts Routing command Address SDSF to other... TSO/ISPF 2
No new posts DTL - how to define key with stacked ... TSO/ISPF 3
No new posts LTJ command CA Products 4
No new posts Query on edit primary command CLIST & REXX 5
Search our Forums:

Back to Top