Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Looking for a TSO REXX

521 views
Skip to first unread message

Pete Wirfs

unread,
Apr 22, 1999, 3:00:00 AM4/22/99
to
I don't want to re-create the wheel.

I have seen a TSO/ISPF REXX exec that was called "Zoom". With this
programmed into a function key, you could place your cursor over a DSN
in JCL you are currently editing, press "zoom", and it would open up
another edit session to display the contents of the target DSN. You can
then do an "=X" to return to the JCL.

Does anyone have a working copy of this REXX they could give me?

Thanks!

Pete Wirfs

unread,
Apr 22, 1999, 3:00:00 AM4/22/99
to


Whoops. I found it here in an individuals REXX library.
You can stop looking now! :-)

Pete

Gilbert Saint-flour

unread,
Apr 22, 1999, 3:00:00 AM4/22/99
to
In <371F59...@saif.com>, on 22 Apr 1999 at 10:17, Pete Wirfs
<pet...@saif.com> said: >> I have seen a TSO/ISPF REXX exec that was

called "Zoom". With this >> programmed into a function key, you could
place your cursor over a DSN >> in JCL you are currently editing, press
"zoom", and it would open up >> another edit session to display the
contents of the target DSN. You can >> then do an "=X" to return to the
JCL.

>Whoops. I found it here in an individuals REXX library.

If you like ZOOM, try DSLIST. DSLIST is a REXX exec that grabs the dsname
at the cursor location and gets you into the ISPF work-place (opt 11) or
the Data Set List utility (opt 3.4) with the dsname in the right place,
ready to use. You can then execute any valid ISPF Utility function or TSO
command against the data set. The nicest thing is that DSLIST, which is
NOT and EDIT macro, works on ANY ISPF screen, including SDSF. Be the
first on your block to use DSLIST; you'll find it in the PDFTools package
in the Tools&docs section of my Web page at http://members.home.net/gsf/
or in file 183 of the CBT tape at http://cbttape.org

Gilbert Saint-flour <g...@ibm.net>

Pete Wirfs

unread,
Apr 23, 1999, 3:00:00 AM4/23/99
to
Pete Wirfs wrote:
>
> I don't want to re-create the wheel.
>
> I have seen a TSO/ISPF REXX exec that was called "Zoom". With this
> programmed into a function key, you could place your cursor over a DSN
> in JCL you are currently editing, press "zoom", and it would open up
> another edit session to display the contents of the target DSN. You can
> then do an "=X" to return to the JCL.
>
> Does anyone have a working copy of this REXX they could give me?
>
> Thanks!


Gilbert led me to some neat stuff!
I've had several requests for the simple ZOOM guy, so here it is:
(You gotta strip the line numbers)

000001 /*% NOCOMMENT - THIS STATEMENT REMOVES ALL REXX COMMENT LINES
000002 BEFORE THE PROGRAM IS LOADED INTO VLF STORAGE. */
000003
000004 /* PROGRAM: ZOOM
000005 Author: JOHN BUBENHEIM - UNION BANK
000006 SYNTAX: ZOOM E - EDIT MODE
000007 ZOOM B - BROWSE MODE (DEFAULT)
000008 PURPOSE: CURSOR SENSITIVE DSN AND DDNAME RECOGNITION ALLOWING
000009 USERS TO ZOOM INTO ANOTHER DATSET WITHOUT LEAVING
000010 CURRENT EDIT SESSION.
000011 */
000012
000013 SETUP:
000014 "ISPEXEC CONTROL ERRORS RETURN"
000015 X = MSG("OFF")
000016 "ISREDIT MACRO (FUNC)"
000017 IF TRANSLATE(SUBSTR(FUNC,1,1)) = "E" THEN FUNC = "EDIT"
000018 ELSE FUNC = "BROWSE"
000019
000020 CHECK_CURSOR_DATA:
000021 "ISREDIT (LIN,COL) = CURSOR"
000022 OLIN = LIN ; OCOL = COL
000023 IF COL = 0 THEN
000024 DO
000025 "ISREDIT FIND '.' .ZCSR .ZCSR"
000026 IF RC = 4 THEN "ISREDIT CURSOR = .ZCSR 1"
000027 "ISREDIT (LIN,COL) = CURSOR"
000028 END
000029 "ISREDIT (DATA) = LINE .ZCSR"
000030 DATA = TRANSLATE(DATA)
000031 LEN = LENGTH(DATA)
000032 /*SAY "LENGTH="LEN*/
000033 VAL = "ABCDEFGHIJKLMNOPQRSTUVWXYZ@#$0123456789.{()-+&"
000034 /*
000035 IF VERIFY(SUBSTR(DATA,COL,1),VAL,"N") \= 0
THEN
000036
DO
000037 SAY "INVALID CURSOR
LOCATION"
000038 SIGNAL
QUIT
000039
END
000040
*/
000041 MEM =
""
000042 IF SUBSTR(DATA,1,2) = "//" & COL < POS(" DD ",DATA) THEN CALL
DDNAME
000043 ELSE CALL
DSNAME
000044
000045
PROCESS_STACK:
000046 DO
QUEUED()
000047 PULL
DSN
000048 IF POS("&",DSN) \= 0 & POS("&&",DSN) = 0 THEN CALL
SYMBOLIC
000049 IF MEM \= "" THEN DSN = DSN || "(" || MEM ||
")"
000050 MSG =
SYSDSN("'"DSN"'")
000051
"NEWSTACK"
000052 IF (MSG = "INVALID DATASET NAME, '"DSN"'" & MEM = "") |,
000053 (MSG = "MEMBER NOT FOUND" & MEM = "") |,
000054 (MSG = "OK") THEN INTERPRET "CALL" FUNC
000055 ELSE SAY MSG "-" DSN
000056 "DELSTACK"
000057 END
000058
000059 QUIT:
000060 "ISREDIT RESET"
000061 "ISREDIT CURSOR = "OLIN OCOL
000062 EXIT
000063
000064 DDNAME:
000065 DDN = SUBSTR(DATA,3,POS(" ",DATA) - 3)
000066 "ISREDIT (LAST) = LINENUM .ZLAST"
000067 DO N = 1 TO (LAST - LIN + 1) BY 1
000068 IF N \= 1 THEN "ISREDIT (DATA) = LINE" LIN + N - 1
000069 PARSE VAR DATA V1 3 V2 V3 V4 V5
000070 IF V1 = "//" THEN
000071 SELECT
000072 WHEN SUBSTR(DATA,3,1) = "*" THEN NOP
000073 WHEN SUBSTR(DATA,3,1) = " " | N = 1 THEN
000074 DO
000075 IF V2 \= "" & V3 = "DD" THEN V2 = V4
000076 IF V2 = "DD" THEN V2 = V3
000077 IF POS("DSNAME=",V2) \= 0 THEN
000078 DO
000079 COL = POS("DSNAME=",DATA) + 7
000080 SAY "COL="COL
000081 CALL DSNAME
000082 END
000083 IF POS("DSN=",V2) \= 0 THEN
000084 DO
000085 COL = POS("DSN=",DATA) + 4
000086 SAY
"COL="COL
000087 CALL
DSNAME
000088
END
000089
END
000090 OTHERWISE LEAVE
N
000091
END
000092
END
000093 IF QUEUED() > 1
THEN
000094
DO
000095
"NEWSTACK"
000096 SAY "DD STATEMENT '"DDN"' CONTAINS CONCATENATED DATA
SETS."
000097
SAY
000098 SAY "PLEASE ENTER A NAME TO BEGIN A MEMBER SEARCH, OR JUST
PRESS"
000099 SAY "ENTER TO" FUNC "EACH DATA SET
INDIVIDUALLY."
000100
SAY
000101 PULL
MEM
000102
"DELSTACK"
000103
END
000104
RETURN
000105
000106
DSNAME:
000107 /*SAY "REVERSE
DATA="REVERSE(DATA)*/
000108 BEG =
VERIFY(REVERSE(DATA),VAL,"N",(LEN-COL+1))
000109 IF BEG = 0 THEN BEG = 1 ; ELSE BEG = LEN - BEG +
2
000110 END = VERIFY(DATA,VAL,"N",COL) ; IF END = 0 THEN END = LEN +
1
000111 DSN = SUBSTR(DATA,BEG,ABS(END -
BEG))
000112 QUEUE
DSN
000113
RETURN
000114
000115
SYMBOLIC:
000116 "ISREDIT EXCLUDE '//*' 1
ALL"
000117 DO
FOREVER
000118 POS1 =
POS("&",DSN)
000119 IF POS1 = 0 THEN
LEAVE
000120 POS2 = POS(".",DSN,POS1)
000121 IF POS2 = 0 THEN POS2 = VERIFY(DSN,"()","M",POS1) - 1
000122 IF POS2 < 0 THEN POS2 = LENGTH(DSN)
000123 SYM = STRIP(SUBSTR(DSN,(POS1 + 1),(POS2 - POS1)),"T",".")
000124 "ISREDIT FIND ' "SYM"=' NEXT NX"
000125 IF RC = 4 THEN "ISREDIT FIND ',"SYM"=' NEXT NX"
000126 IF RC = 4 THEN "ISREDIT FIND ' "SYM"=' ALL NX"
000127 IF RC = 4 THEN "ISREDIT FIND ',"SYM"=' ALL NX"
000128 "ISREDIT (NUMFINDS) = FIND_COUNTS"
000129 IF NUMFINDS = 1 THEN
000130 DO
000131 "ISREDIT (LIN,COL) = CURSOR"
000132 "ISREDIT (DATA) = LINE" LIN
000133 POS3 = POS("=",DATA,COL) + 1
000134 POS4 = VERIFY(DATA,", ","M",POS3)
000135 LIT = SUBSTR(DATA,POS3,(POS4-POS3))
000136 END
000137
ELSE
000138
DO
000139
"NEWSTACK"
000140
SAY
000141 SAY "WARNING: UNABLE TO DETERMINE THE LITERAL VALUE
FOR"
000142 SAY " SYMBOLIC VARIABLE
'"SYM"'"
000143
SAY
000144 SAY "PLEASE ENTER A VALUE (OR NULL) TO RESUME
PROCESSING."
000145
SAY
000146 PULL
LIT
000147
"DELSTACK"
000148 LIT =
STRIP(LIT,"B","'")
000149
END
000150 LIT =
STRIP(LIT,"B","'")
000151 DSN = INSERT(LIT,DELSTR(DSN,POS1,(POS2 - POS1 + 1)),(POS1 -
1))
000152 "ISREDIT CURSOR = " OLIN
OCOL
000153
END
000154 RETURN
000155
000156 EDIT:
000157 "ISPEXEC EDIT DATASET('"DSN"')"
000158 SELECT
000159 WHEN RC = 14 THEN SAY DSN " - DATA SET OR MEMBER IN USE"
000160 WHEN RC = 16 THEN SAY DSN " - NO MEMBERS IN LIBRARY"
000161 WHEN CC = 20 THEN CALL BROWSE
000162 OTHERWISE NOP
000163 END
000164 RETURN
000165
000166 BROWSE:
000167 "ISPEXEC BROWSE DATASET('"DSN"')"
000168 SELECT
000169 WHEN RC = 12 THEN SAY DSN " - ZERO-LENGTH DATA"
000170 WHEN RC = 14 THEN SAY DSN " - MEMBER NOT FOUND"
000171 WHEN RC = 16 THEN SAY DSN " - NO MEMBERS IN LIBRARY"
000172 WHEN CC = 20 THEN SAY "SEVERE ERROR"
000173 OTHERWISE NOP
000174 END
000175 RETURN

Polanik, Joseph (Joseph)** CTR **

unread,
Apr 23, 1999, 3:00:00 AM4/23/99
to
Could you post the REXX to the list? It sounds like
something that many people would want.

TIA,

Joe Polanik

----------
From: Pete Wirfs [SMTP:pet...@SAIF.COM]
Sent: Thursday, April 22, 1999 1:17 PM
To: REXX...@UGA.CC.UGA.EDU
Subject: Re: Looking for a TSO REXX

Pete Wirfs wrote:
>
> I don't want to re-create the wheel.
>
> I have seen a TSO/ISPF REXX exec that was called "Zoom". With this
> programmed into a function key, you could place your cursor over a DSN
> in JCL you are currently editing, press "zoom", and it would open up
> another edit session to display the contents of the target DSN. You can
> then do an "=X" to return to the JCL.
>
> Does anyone have a working copy of this REXX they could give me?
>
> Thanks!

Whoops. I found it here in an individuals REXX library.

Mike Hall

unread,
Apr 23, 1999, 3:00:00 AM4/23/99
to
Did this with an EDIT macro once. That high-lighted the member that could
be edited. Figuring out how to embed the attribute bytes for the member
that could be selected was about the most difficult part as I remember. No
longer have it, unfortunately.
Just
edit member
where member is a member from the command line should work. At our
ISPF release EDIT is also included with the Menu options on the action
bar.

**********************************************************************
This email and any files transmitted with it are confidential and
intended solely for the use of the individual or entity to whom they
are addressed. If you have received this email in error please notify
the system manager.

This footnote also confirms that this email message has been swept by
MIMEsweeper for the presence of computer viruses.

www.mimesweeper.com
**********************************************************************

Mike Hall

unread,
Apr 23, 1999, 3:00:00 AM4/23/99
to
This one would work I think more efficient is probably possible...
/* ZOOM - REXX EDIT macro - edit member at cursor */
ISREDIT MACRO

ADDRESS ISPEXEC
"CONTROL ERRORS RETURN"

ADDRESS ISREDIT
"(CLINE CCOL) = CURSOR"
"(VLINE) = LINE .ZCSR"
wordin = 1
DO i = ccol TO 1 BY -1
IF SUBSTR(vline,i,1) = ' ' THEN
DO
wordin = i + 1
LEAVE
END
END
estr = SUBSTR(vline,wordin,LENGTH(vline) - ccol)
IF POS(' ',estr) = 0 THEN
DO
SAY 'Invalid member selected'
RETURN
END
member = SUBSTR(vline,wordin,POS(' ',estr) - 1)
IF LENGTH(member) > 8 THEN
DO
SAY 'Invalid member length'
RETURN
END
"EDIT "member

RETURN

Olyhouse

unread,
Apr 24, 1999, 3:00:00 AM4/24/99
to
/*REXX*/
/* WHEN IN EDIT MODE, TYPE EXEC NAME ON THE COMMAND LINE, */
/* PLACE CURSOR UNDER DSN, AND PRESS <ENTER>. */
/* PF KEY CAN BE USED IN LIEU OF TYPING EXEC NAME. */
/* ACTIONS CAN THEN BE PERFORMED AGAINST THE DSN. */
/* M MCDONALD */
ADDRESS ISREDIT "MACRO"
ADDRESS ISREDIT "(CURLINE, CURCOL) = CURSOR"
LINENUM = CURLINE
X = CURCOL
ADDRESS ISREDIT "(LINETEXT) = LINE" LINENUM

PARSE VALUE LINETEXT WITH "DSN=" DSN ","
IF DSN = "" THEN DO
SAY "CANNOT FIND A DSN"
PULL DUMMY
EXIT
END

/*** ***/
/*** REMOVE SPACES, THEN ENCLOSE IN QUOTES. ***/
/*** ***/
DSN = SPACE(DSN)
DSN = "'"DSN"'"

/*** ***/
/*** THE VARIABLE 'DSN' NOW CONTAINS THE DSN. ***/
/*** PROMPT USER FOR ACTION TO PERFORM AND THEN ***/
/*** PERFORM THE ACTION. ***/
/*** ***/
DO FOREVER
SAY " "
SAY " DSN:" DSN
SAY " "
SAY " 1 - BROWSE "
SAY " 2 - EDIT "
SAY " 3 - INFO "
SAY " Q - QUIT "
SAY " "
PULL CHOICE
IF CHOICE = "Q" THEN EXIT
X = SYSDSN(DSN)
IF X <> "OK" THEN DO
SAY X
ITERATE
END
SELECT
WHEN CHOICE = 1 THEN CALL BROWSE
WHEN CHOICE = 2 THEN CALL EDIT
WHEN CHOICE = 3 THEN CALL INFO
OTHERWISE ITERATE
END
END
EXIT

BROWSE:


ADDRESS ISPEXEC "CONTROL ERRORS RETURN"

ADDRESS ISPEXEC "BROWSE DATASET("DSN")"
RETURN

EDIT:


ADDRESS ISPEXEC "CONTROL ERRORS RETURN"

ADDRESS ISPEXEC "EDIT DATASET("DSN")"
RETURN

INFO:
ADDRESS TSO "LISTDS ("DSN")"
RETURN

M McDonald

Doug Nadel

unread,
Apr 24, 1999, 3:00:00 AM4/24/99
to
On Thu, 22 Apr 1999 09:13:11 -0700, Pete Wirfs <pet...@saif.com>
wrote:

>I don't want to re-create the wheel.
>
>I have seen a TSO/ISPF REXX exec that was called "Zoom". With this
>programmed into a function key, you could place your cursor over a DSN
>in JCL you are currently editing, press "zoom", and it would open up
>another edit session to display the contents of the target DSN. You can
>then do an "=X" to return to the JCL.
>
>Does anyone have a working copy of this REXX they could give me?
>
>Thanks!

OK. I reinvented the wheel, but I think TSO folks will find this
interesting. This exec allows cursor sensitive VIEW from anywhere
within ISPF (not just edit or view). The interesting thing is that it
uses undocumented (and UNSUPPORTED) variables ZSCREENI (screen image)
and ZSCREENC (cursor position). There are some instances where these
variables may not be what you'd expect and ZSCREENI is just a direct
image of ISPF's internal mapping of the screen so it has odd attribute
byte translations. For those reasons, this was not (and will not be)
officially documented. However, here is a small example of how it
works. I forgot a few valid dsname characters (-,{, maybe others) but
you can add them to the string. Other improvements could be made too.

Hope this helps.
Doug Nadel


/* Rexx exec to do cursor sensitive data extraction from an ISPF */
/* Screen. */
/* Uses undocumented/Unsupported variables ZSCREENI & ZSCREENC */
/* available in ISPF for OS/390 R2.5 (ISPF4.5). */
/* */
/* Screen image may translate attr bytes to dsn chars causing */
/* extra characters like '#' to be added to the dsname */
/* */
/* Will not work in popups if invoked with the SUSPEND keyword.*/
/* Note that the default command table entry for TSO does have */
/* the SUSPEND keyword. */
/* */
/* Usage: */
/* Name this VCURSOR, set a PFKey to VCURSOR and */
/* create a command table entry: */
/* VCURSOR 0 SELECT CMD(%VCURSOR) MODE(FSCR) */
/* (or Setting PFKey to TSO %VCURSOR will work in most cases)*/
/* Then place cursor on dsname and press the PF key. */
/* */
/* Author : Doug Nadel April 24, 1999 */
/*------------------------------------------------------------------*/
Address ispexec
'VGET (ZSCREENI,ZSCREENC)' /* Extract screen image and cursor pos */
chars='abcdefghijklmnopqrstuvwxyz' /* Setup valid dsname chars */
chars=chars||translate(chars)||'$#@0123456789.'''
start = reverse(substr(zscreeni,1,zscreenc))' ' /* Data before csr */
rest = delstr(zscreeni,1,zscreenc)' ' /* Data after csr */
If verify(substr(rest,1,1),chars)=0 Then /* Maybe csr on dsn*/
Do /* Extract dsn from screen image and view dataset */
name=delstr(reverse(substr(start,1,verify(start,chars))),1,1)||,
substr(rest,1,verify(rest,chars)-1)
If substr(name,1,1) \= "'" Then /* If name isn't TSO qualified*/
name = "'"name"'" /* Add quotes */
'CONTROL ERRORS RETURN' /* Return errors to program */
'VIEW DATASET('translate(name)')' /* Try viewing the dataset */
If rc>7 Then 'SETMSG MSG(ISRZ002)' /* If error, show messages */
End
Else /* Cursor was not on a dsname */
Do /* give user an error message */
zerrsm = ''
Parse Value '* YES The cursor was not on a data set name.' ,
With zerrhm zerralrm zerrlm
'SETMSG MSG(ISRZ002)'
End

Doug Nadel

unread,
Apr 24, 1999, 3:00:00 AM4/24/99
to
On Sat, 24 Apr 1999 04:22:42 GMT, some...@mindspring.com (Doug Nadel)
wrote:

I couldn't help cleaning up the extraction of the name from the screen
image & reposting. Sorry for the 2 posts, but heck... ya gotta love
those translate(), lastpos() & word() functions!

(If there's a still better way to do that part, I'd like to know. It
seems an interesting problem).

I also put this source at http://booksrv2.raleigh.ibm.com/ispf/nadel

Doug Nadel

>On Thu, 22 Apr 1999 09:13:11 -0700, Pete Wirfs <pet...@saif.com>
>wrote:
>
>>I don't want to re-create the wheel.

>OK. I reinvented the wheel, but I think TSO folks will find this


>interesting. This exec allows cursor sensitive VIEW from anywhere
>within ISPF (not just edit or view). The interesting thing is that it
>uses undocumented (and UNSUPPORTED) variables ZSCREENI (screen image)
>and ZSCREENC (cursor position). There are some instances where these
>variables may not be what you'd expect and ZSCREENI is just a direct
>image of ISPF's internal mapping of the screen so it has odd attribute
>byte translations. For those reasons, this was not (and will not be)
>officially documented. However, here is a small example of how it
>works. I forgot a few valid dsname characters (-,{, maybe others) but
>you can add them to the string. Other improvements could be made too.
>
>Hope this helps.
>Doug Nadel
>
>


/* Rexx exec to do cursor sensitive data extraction from an ISPF */
/* Screen. */

/* Uses undocumented/Unsupported variables zscreeni & Zscreenc */
/* available in ISPF for os/390 R2.5 (ISPF4.5). */


/* */
/* Screen image may translate attr bytes to dsn chars causing */
/* extra characters like '#' to be added to the dsname */
/* */
/* Will not work in popups if invoked with the SUSPEND keyword.*/
/* Note that the default command table entry for TSO does have */
/* the SUSPEND keyword. */
/* */
/* Usage: */

/* Name this VCURSOR, set a pfkey to vcursor and */


/* create a command table entry: */
/* VCURSOR 0 SELECT CMD(%VCURSOR) MODE(FSCR) */

/* (Or setting pfkey to TSO %Vcursor will work in most cases)*/
/* Then place cursor on dsname and press the pf key. */


/* */
/* Author : Doug Nadel April 24, 1999 */
/*------------------------------------------------------------------*/
Address ispexec
'VGET (ZSCREENI,ZSCREENC)' /* Extract screen image and cursor pos */

trtable='abcdefghijklmnopqrstuvwxyz' /* Setup valid dsname chars */
trtable=trtable||translate(trtable)||'$#@0123456789.''-{'
trtable=translate(xrange('00'x,'ff'x),,trtable,' ')
zscreeni=translate(zscreeni,,trtable,' ') /* remove non-dsn chars */
If substr(zscreeni,zscreenc+1,1) \= ' ' then /* Maybe csr on dsn*/


Do /* Extract dsn from screen image and view dataset */

name=word(substr(zscreeni,1+lastpos(' ',zscreeni,zscreenc)),1)
name=translate(strip(substr(name,1,44))) /* max of 44 char name */


'CONTROL ERRORS RETURN' /* Return errors to program */

'LMINIT DATAID(VCURSOR) DATASET('name')' /* alloc w/ tso naming*/
If rc>0 & substr(name,1,1) \= "'" Then /* alloc w/o Tso name */
'LMINIT DATAID(VCURSOR) DATASET('''name''')'
If rc=0 Then 'VIEW DATAID('vcursor')' /* VIEW the dataset */
else /* Allocs failed: set original message */
'LMINIT DATAID(VCURSOR) DATASET('name')'


If rc>7 Then 'SETMSG MSG(ISRZ002)' /* If error, show messages */

'LMFREE DATAID(&VCURSOR)' /* free ds if allocated */


End
Else /* Cursor was not on a dsname */
Do /* give user an error message */

zerrsm = 'Invalid cursor position'

Patrick Leroy

unread,
Apr 26, 1999, 3:00:00 AM4/26/99
to
I have this one that can do it everywhere (not only from edit), good for
SDSF, ...
Set a PF key to "TSO %DSLISTPF" in all your ISPF applications (EDIT, SDSF,
PDF, ...) and just press it when the cursor in over a dataset name, it will
call ISPF worplace. then you can do a DL (dataset list) or just enter for
editing.
HTH.
Pat.
<<dslistpf.txt>>
_____________________________________
Patrick Leroy
Patric...@mello-imperio.pt


dslistpf.txt

Bob Nagelgast

unread,
Apr 28, 1999, 3:00:00 AM4/28/99
to
Rexx-ers.

Dit is een eenvoudiger versie.

ISPF MACRO :

address ispexec /* */
"isredit macro" /* */
"isredit (row,col) = cursor" /* bepaal rij en kolom */
"isredit (regel) = line" row /* vul regel */
X=INDEX(REGEL,'DSN=') /* afkappen op DSN= */
regel = substr(regel,x+4) /* */
hs = index(regel,')') /* afkappen op ) */
if hs >0 then regel = substr(regel,1,hs) /* */
km = index(regel,',') /* afkappen op , */
if km >0 then regel = substr(regel,1,km-1) /* */
sp = index(regel,' ') /* afkappen op spatie */
if sp >0 then regel = substr(regel,1,sp-1) /* */
x = SYSDSN("'"regel"'") /* geldige datasetnaam? */
if x = 'OK' then /* */
do /* */
"ISPEXEC EDIT DATASET('"regel"')" /* ja: edit dataset */
/* !! BROWSE voor bekijen !! */
end /* */
else /* */
do /* nee: foutmelding */
zedsmsg = 'Dataset niet gevonden' /* */
zedlmsg = x /* */
'ISPEXEC SETMSG MSG(ISRZ001)' /* */
exit /* */
end /* */

=========================================================================


Frank Clarke

unread,
Apr 28, 1999, 3:00:00 AM4/28/99
to

Clean and clear. I can even decipher the Dutch by reading the code !
;-)


On 28 Apr 1999 11:48:52 GMT, r.p.na...@kpn.com (Bob Nagelgast)
wrote:

Frank Clarke
Tampa Area REXX Programmers' Alliance (TARPA)
Member of the REXX Language Assn
Join us at http://www.rexxla.org
(remove currency symbol when replying)

0 new messages