/* REXX */
/* Editieren Dataset; Cursor muß auf DSN gesetzt werden */
/* ----------------------------------------------------- */
'ISREDIT MACRO (parm1)'
'isredit (dsn) = DATASET' /* name of current dataset */
'isredit (mem) = MEMBER' /* name of current member */
/* Set some variables : */
user = userid()
copy_1 = 'ZVS.IGF.COPY' /* Test-Library for Copy-Members */
copy_2 = 'MQM.SYS.KVS.SCSQCOBC' /* MQ-Copies */
copy_3 = '' /* IGF-Copies */
maclib = '' /* Assembler-Macro-Library */
alblib = '' /* Assembler-Albingia Macros */
callcop1 = 'ZVS.ALL.COBOL' /* Test-Library for called pgms */
callcop2 = 'XTRNCLS.T.COBOL'
/* Work-Library for called pgms */
address ispexec
'isredit (,col) = CURSOR'
parm1 = translate(parm1)
if parm1 = 'T' then
trace ?R
if col = 0 then
do
zedsmsg = 'Invalid cursor position'
zedlmsg = 'Please, set the cursor in the Edit Area'
'setmsg msg(isrz001)'
exit(12)
end
'isredit (maxcol) = DATA_WIDTH'
'isredit (line) = LINE .ZCSR'
i = 0
/* An den Anfang des Names gehen, bis SPACE, Hochkomma, Komma */
/* Punkt oder '=' gefunden */
do i = col to 1 by -1 ,
while ( substr(line, i, 1) /= " " ) & ,
( substr(line, i, 1) /= "'" ) & ,
( substr(line, i, 1) /= "," ) & ,
( substr(line, i, 1) /= "." ) & ,
( substr(line, i, 1) /= "=" )
nop
end
/* Wenn Name am linken Rand steht, war Auswahl falsch */
if i = 1 then
do
zedsmsg = 'Invalid select'
msg = 'Please, set the cursor on the Copy-Member to be edited'
zedlmsg = msg
'setmsg msg(isrz001)'
exit(12)
end
/* set index on first character of name */
col_anf = i + 1
/* Ausgehend von Spalte col den nä. space, das nä. Hochkomma, */
/* den nä. Punkt oder das nä. Komma suchen */
do i = col_anf to maxcol by 1 ,
while ( substr(line, i, 1) /= ' ' ) & ,
( substr(line, i, 1) /= "'" ) & ,
( substr(line, i, 1) /= '.' ) & ,
( substr(line, i, 1) /= ',' )
nop
end
/* set index on last character of name */
col_end = i - 1
/* compute length of name and evaluate name */
col_len = col_end -col_anf + 1
name = substr(line, col_anf, col_len)
'control errors return'
/* Wenn *COPY-Zeile, dann direkt Copy-Lib scannen */
copy_lit = substr(line, 1, 5)
if copy_lit ^= '*COPY' then ,
do
/* Try to edit member 'name' in current PO-Dataset */
dsn_edit = "'" !! dsn !! "(" !! name !! ")'"
interpret 'dsn_vorh = sysdsn("'dsn_edit'")'
end
if dsn_vorh = 'OK' then
'edit dataset('dsn_edit')'
else
do
/* try with copy_1 */
dsn_edit = "'" !! copy_1 !! "(" !! name !! ")'"
interpret 'dsn_vorh = sysdsn("'dsn_edit'")'
if dsn_vorh = 'OK' then
'edit dataset('dsn_edit')'
else
do
/* try with copy_2 */
dsn_edit = "'" !! copy_2 !! "(" !! name !! ")'"
interpret 'dsn_vorh = sysdsn("'dsn_edit'")'
if dsn_vorh = 'OK' then
'edit dataset('dsn_edit')'
else
do
/* try with copy_3 */
dsn_edit = "'" !! copy_3 !! "(" !! name !! ")'"
interpret 'dsn_vorh = sysdsn("'dsn_edit'")'
if dsn_vorh = 'OK' then
'edit dataset('dsn_edit')'
else
do
/* try with 'GROPSYS.PROGRAMS.SOURCE' */
dsn_edit = "'" !! callcop2 !! "(" !! name !! ")'"
interpret 'dsn_vorh = sysdsn("'dsn_edit'")'
if dsn_vorh = 'OK' then
'edit dataset('dsn_edit')'
else
do
/* try with 'SYS1.MACLIB' */
dsn_edit = "'" !! maclib !! "(" !! name !! ")'"
interpret 'dsn_vorh = sysdsn("'dsn_edit'")'
if dsn_vorh = 'OK' then
'edit dataset('dsn_edit')'
else
do
/* try with 'SYS1.ALBMAC' */
dsn_edit = ,
"'" !! alblib !! "(" !! name !! ")'"
interpret 'dsn_vorh = sysdsn("'dsn_edit'")'
if dsn_vorh = 'OK' then
'edit dataset('dsn_edit')'
else
do
zedsmsg = 'Member not found'
zedlmsg = 'Member 'name' was not',
'found in any',
'CALL-, MAC- or COPY-library'
'setmsg msg(isrz001)'
exit(24)
end /* Dataset ist nicht vorhanden */
end /* try with 'SYS1.ALBMAC' */
end /* try with 'SYS1.MACLIB' */
end /* try with 'GROPSYS.PROGRAMS.SOURCE' */
end /* try with copy_3 */
end /* try with copy_2 */
end /* try with copy_1 */
/* Return-Code after leaving the edited source */
end_edc:
select
when rc = 0 then
do
zedsmsg = 'Data saved'
zedlmsg = 'Data was saved in Dataset 'dsn_edit
'setmsg msg(isrz000)'
end
when rc = 4 then
do
zedsmsg = 'Data not saved'
zedlmsg = 'Data in Dataset 'dsn_edit' was not saved'
'setmsg msg(isrz000)'
end
when rc = 14 then
do
zedsmsg = 'Dataset in use'
zedlmsg = 'Dataset 'dsn_edit' is in use by another job or user'
'setmsg msg(isrz001)'
end
when rc = 16 then
do
zedsmsg = 'Empty Dataset'
zedlmsg = 'Dataset 'dsn_edit' is empty or member not found'
'setmsg msg(isrz001)'
end
otherwise
do
zedsmsg = 'Empty Dataset'
zedlmsg = 'Dataset 'dsn_edit' is empty or member not found'
'setmsg msg(isrz001)'
end
end
exit(rc)
¤ Dauer der Verarbeitung: 0.20 Sekunden
(vorverarbeitet)
¤
|
Haftungshinweis
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.
|