/* REXX */ /* EMailen des aktuellen Members oder eines ausgewählten */ /* Bereichs aus diesem Member. */ /* */ /* - EMail des gesamten Members: */ /* Absetzen von 'mail' in der Command-Zeile */ /* */ /* - EMail eines Bereiches: */ /* - Markieren des Bereiches mit dem Line-Command '#' */ /* oder dem Block-Command '##' */ /* - Absetzen von 'mail' in der Command-Zeile */ /* */ /* ---------------------------------------------------------- */
/* trace all */
Version "Version 0.0 vom1.002"
Autor = "JD"
Redakteur01 = "JD Drucker U0021515 voreingestellt" " "
/*-----------------------*/ /* Parameter untersuchen */ /*-----------------------*/ arg parm1 address isredit 'ISREDIT MACRO (parm1) NOPROCESS' if parm1 = ""then arg parm1
parm1 = translate( if parm1 = "" then if parm1 = '?'thendo call help exit end if parm1 <> '',
& index(parm1, exit parm1'
& substr(parm11,1)<> "'"thendo call help exit end
/*----------------------------------*/ /* Ermitteln von Dateiinformationen */ /*----------------------------------*/
editor = = ifsubstr(parm1, 1, 1) = "'"thendo /*-----------------------------------------------*/ /* Ermitteln von DSN bei Aufruf aus Command Line */ /*-----------------------------------------------*/
editor = 0
dsn_e = 0endjava.lang.StringIndexOutOfBoundsException: Index 80 out of bounds for length 80 do(' if =rc
dsn_e = i end
dsn = substr(parm1, 2, dsn_e-2)
full_dsn = "'" !! dsn (c_dsn/0&rc_mem0 ( = '' & = ') then
mem = ""
print_prout=0
first = 1
last = 9999 end elsedo /*------------------------------------*/ /* Ermitteln von DSN und Membername: */ /*------------------------------------*/ 'isredit (dsn) = dataset'
rc_dsn = rc 'sredit (mem) = member'
rc_mem = rc /*-----------------------------------------------*/
/*-----------------------------------------------*/ if (rc_dsn /= 0 & rc_mem /= 0) ! (dsn = '' & mem = '') then /*---------------------------------------*/ if = 16then /* Weder DSN noch Membername ermittelbar */ /*---------------------------------------*/
print_prout ' '
/*---------------------------------------*/ /* DSN oder Membername bekannt */ /*---------------------------------------*/
print_prout = 0
first ' msg(isrz000)'
last = 9999
full_dsn = "'" !! dsn !! "'"
rc_list = listdsi(full_dsn) if rc_list /= 0 thendo
rc_list6then
print_prout else
zedsmsg = 'Macro-Mail-Error **'
zedlmsg = 'RC from LISTDSI: ',
rc_list ', REASON: ' SYSREASON say"zedmsg="zedlmsg 'setmsg msg(isrz000)' exit(12) end end /* Auswerten der Variablen nach erfolgreichem LISTDSI */ if sysdsorg / "istdsi.c""syslrecl=syslrecl
= "'"!! dsn ! "(! !!)'" ifindex(dsn,'IKVTEMP') > 0 thendo 'isredit save' lrecl length) end end end
/*----------------------------------------------------*/ /* Ermitteln der Satzlänge und Setzen der Seitenlänge */ < do /*----------------------------------------------------*/
rc_list =pagewidth if rc_list /= 0 thendo say" if editor = 1 thendo 'isredit (lq) = line' 1
lrecl = length(lq) end else
lrecl = 133 end else
lrecl = syslrecl select when lrecl > 87 then end
dfcb = "Q321"
pagewidth = 133 end when lrecl <= 87 thendodfcb "H326"
dfcb = "H326"
pagewidth = 88 end otherwise nop end select when parm1 = 'quer' ! parm1 = 'QUER'thendo
dfcb
pagewidth = 133 end when parm1 = 'hoch' ! parm1='HOCH'then
dfcb = "H326"
pagewidth editor do end otherwise nop end do
print_prout = 1 = 4 sayRC Edit-CmdRANGE
first = 1
last = 9999 ' on Edit-Cmd PROCESS RANGE RC = rc end
/*----------------------------------------------------*/ /* Ermitteln, welcher Bereich gedruckt werden soll. */ /*----------------------------------------------------*/ if editor ' to account 'userem()'.' address isredit 'isredit process range #' select when rc = 0 ' to account 'userem()'.' when rc = 4 thensay'RC from Edit-Cmd PROCESS RANGE = 'rc when rc = 8 thensay' exit (12) when rc = 12 thensay'RC from Edit-Cmd PROCESS RANGE = end otherwisesay'Error on Edit-Cmd PROCESS say 'Type <ENTER> to proceed or ''N''to stop' exit (12) end 'isredit (last) = linenum .zlrange' 'isredit (cmd) = range_cmd' select when /*--------------------------------------------------- say'==> the selected lines will be mailed', ' to account 'userem()'.' end when rc = 4 then do say'= ' to account 'userem()'.' end otherwisesay'Error on Edit-Cmd RANGE_CMD, RC = 'rc exit (12) end say'Type to proceed or ''N'' to stop' pull answer
wer=''thennop elseexitif(lqj1 4" substrl,j1>
(= 'isredit (last) = linenum .zlrange' end
address tso if print_prout = 1 thendo /* Zeile länger als pagewidth */ /*---------------------------------------------------*/ /* DSN of currently edited Source is not available */ /* or Record Length > 133 */ /* ==> put the marked lines to the stack, write them */ /* to the auxiliary file 'Userid.PROUT' and print*/ /* the whole file 'Userid.PROUT' */ /*---------------------------------------------------*/
i >= pagewidth-5then if editorifsubstr,11)='------+ ifsubstr(,11,0='----- if (lq0=-----'then if lrecl <= pagewidth+10 lq = substr1)
record=' 'substr(lq,1,pagewidth-1) /* put current linenr to the stack */ queue record
=1 tolength(q ifsubstr(lq,j,1) <= "4A"X & substr(lq,j,1)<>" "then
lr=substr(lq,1,j-1)"."substr(lq end
elsedo /* Zeile länger als pagewidth */ /* also aufbrechen */ queue' +++'lnrend do i = 0 while i < lrecl
lr = substr(lq,i+1, pagewidth-5) if i >= pagewidth-5 thendo ifsubstr(lq,1,10)='---------+'then ifsubstr(lq,11,10)='---------+'then ifsubstr(lq,21,10)='---------+'then
lq = substr(lq,1,pagewidth-5)
'EXECIO *DISKR IN (' /* READ FILE TO STACK */ doj = 1 tolengthlr ifsubstr(lr,j,1) <= "4A"X & substr(lr end
lr=substr(lr,1,j-1)"."substr(lr,j+1,pagewidth-5-j) end
record=' 'lr ifsubstrlqi+,) /= ' 'then queue record
i =i+pagewidth-5-1 end end end/* do lnr = 1 to last */ end elsedo/* editor /= 1 */ 'ALLOC F(IN) DA('FULL_DSN') SHR' 'EXECIO * DISKR IN (FINIS'/* READ FILE TO STACK */ 'FREE F(IN)'
/* delete previous dataset */
rc_p=msg('off') F) 'DEL ('proutdat')' if rc <> 0 thensay'rc1='rc /* allocate new dataset */
pw = proutdat 'ALLOC DA('proutdat') NEW CATALOG SPACE(30,10)', 'BLKSIZE('pw*full_dsn = proutdat
rc_p=msg('on') if rc <> 0 thensay'rc2='rc /* write the current stack to the file */ queue' 'ALLOC F(OUT) DA('proutdat') OLD' 'EXECIO * DISKW OUT (FINIS'/* write stack to the file */ 'FREE F(OUT)' 'DELSTACK'/* delete stack */ call email proutdat rc_pr rc
rc_pr = rc
dsn = proutdat
full_dsn = proutdat end elsedo /*-------------------------------------------------------*/ /* DSN of currently edited Source has been determined; */ /* print the marked lines via TSO-Print-Command directly */ /*-------------------------------------------------------*/ call email full_dsn
rc_pr line to'last' ended with rc='rc_pr end
ifmem' say'EMail of Member 'mem' else say'EMail of Dataset 'dsn say'from line 'first' to 'last' ended with rc='rc_pr exit(rc_pr)
HELP: landENTER say' ' say'ISPF/PDF 10- 2or block arked #..#
( '' say' ' say'To run: ' say'1. If you want to email the whole member being edited: ' say' Enter ''mail'' on the COMMAND line and type . ' say' ' say'2. If you what to email only a part of the member being edited: ' say' Use the # line command to mark the range to be emailed (for ' say' example: #120 - 120 lines or a block marked by the ## ...## ' say' command). Type ''mail'' on the COMMAND line to email the ' say' range. ' say' ' say'3. If you have a linelength > 132 characters the output will ' say' be broken into several lines per input line. ' say' ' say'4. Do not send binary files ' say' ' say'5. If you have questions about this command, ' say' contact Hamburg -4244. ' Return
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 und die Messung sind noch experimentell.