/* REXX */ /* Drucken des aktuellen Members oder eines ausgewählten */ /* Bereichs aus diesem Member. */ /* */ /* - Druck des gesamten Members: */ /* Absetzen von 'prd' in der Command-Zeile */ /* */ /* - Druck eines Bereiches: */ /* - Markieren des Bereiches mit dem Line-Command '#' */ /* oder dem Block-Command '##' */ /* - Absetzen von 'prd' in der Command-Zeile */ /* */ /* ---------------------------------------------------------- */
/* trace i */
Version = "Version 1.02 vom 01.01.19xx"
Autor = "NN"
Redakteur01 = "JD Drucker U0021515 voreingestellt"
Redakteur02 = "JD autom. Umschaltung von Hoch- auf Querformat"
Redakteur03 = "JD Fehler bei Selektion ## beseitigt"
Redakteur04 = "JD Fehler PROUT beseitigt"
Redakteur05 = "JD Drucker abhängig von der User-Id", " und Drucken von überlangen Zeilen"
Redakteur06 = "JD PRD in der Tabellenansicht ermög", "licht."
Redakteur07 = "JD PRD ist nun auch im ELIPS möglic", "h."
Redakteur08 = "JD fehlerhaften Close im Rochade be", "handelt."
Redakteur09 = "JD lange Blankzeilen werden abgekür", "zt."
Redakteur10 = "JD lange ---------# Zeilen werden", "gekürzt und Fehler ## beseitigt"
Redakteur11 = "JD Ausgabemessages entfernt ", " "
/*-----------------------*/ /* Parameter untersuchen */ /*-----------------------*/ arg parm1 address isredit 'ISREDIT MACRO (parm1) NOPROCESS' if parm1 = ""then arg parm1
parm1 = translate(parm1) if parm1 = '?'thendo call help exit end if parm1 <> 'hoch' & parm1 <> 'quer' & parm1 <> '',
& parm1 <> 'HOCH' & parm1 <> 'QUER',
& substr(parm1,1,1) <> "'"thendo call help exit end
/*-----------------------*/ /* Find file in TSO */ /*-----------------------*/ 'isredit (dsn) = dataset'
rc_edi = rc if parm1='' & rc_edi > 0 thendo say"searching for dataset..."
pvsname='' call alist dowhilequeued() > 0 pull p ifsubstr(p,1,15)="PVS.TEMP.BROWSE"thendo
pvsname=p end end
parm1="'"pvsname"'" if pvsname = ''thendo say'Dataset not found' exit(4) end say'Type to proceed or ''N'' to stop' pull answer if answer = ''thennop elseexit(4) end
/*---------------------------------------------------------*/ /* Ersatz-Datei mit DSN z.B.= 'ANWJ1.PROUT' (User = anwj1) */ /*---------------------------------------------------------*/
user = userid()
proutdat = '''' !! user !! '.PROUT'''
print_prout = 0
/*----------------------------------*/ /* Ermitteln von Dateiinformationen */ /*----------------------------------*/
editor = 1 ifsubstr(parm1, 1, 1) = "'"thendo /*-----------------------------------------------*/ /* Ermitteln von DSN bei Aufruf aus Command Line */ /*-----------------------------------------------*/
editor = 0
dsn_e = 0 do i = length(parm1) by -1 to 2 ifsubstr(parm1, i, 1) = "'"then
dsn_e = i end
dsn = substr(parm1, 2, dsn_e-2)
full_dsn = "'" !! dsn !! "'"
mem = ""
print_prout = 0
first = 1
last = 9999 end elsedo /*------------------------------------*/ /* Ermitteln von DSN und Membername: */ /*------------------------------------*/ 'isredit (dsn) = dataset'
rc_dsn = rc 'isredit (mem) = member'
rc_mem = rc /*-----------------------------------------------*/ /* Ermitteln von DSN bei Aufruf aus Editor */ /*-----------------------------------------------*/ if (rc_dsn /= 0 & rc_mem /= 0) ! (dsn = '' & mem = '') then /*---------------------------------------*/ /* Weder DSN noch Membername ermittelbar */ /*---------------------------------------*/
print_prout = 1 elsedo /*---------------------------------------*/ /* DSN oder Membername bekannt */ /*---------------------------------------*/
print_prout = 0
first = 1
last = 9999
full_dsn = "'" !! dsn !! "'"
rc_list = listdsi(full_dsn) if rc_list /= 0 thendo if rc_list = 16 then
print_prout = 1 elsedo
zedsmsg = 'Macro-prd-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 /= 'PS'then
full_dsn = "'" !! dsn !! "(" !! mem !!")'" ifindex(dsn,'IKVTEMP') > 0 thendo 'isredit save' end end end
/*----------------------------------------------------*/ /* Ermitteln der Satzlänge und Setzen der Seitenlänge */ /*----------------------------------------------------*/
rc_list = listdsi(full_dsn) if rc_list /= 0 thendo say"listdsi.rc="rc_list" syslrecl="syslrecl if editor = 1 thendo 'isredit (lq) = line' 1
lrecl = length(lq) end else
lrecl = 133 end else
lrecl = syslrecl select when lrecl > 87 thendo
dfcb = "Q321"
pagewidth = 133 end when lrecl <= 87 thendo
dfcb = "H326"
pagewidth = 88 end otherwise nop end select when parm1 = 'quer' ! parm1 = 'QUER'thendo
dfcb = "Q321"
pagewidth = 133 end when parm1 = 'hoch' ! parm1 = 'HOCH'thendo
dfcb = "H326"
pagewidth = 88 end otherwise nop end if lrecl >= pagewidth thendo
print_prout = 1
first = 1
last = 9999 end
/*----------------------------------------------------*/ /* Ermitteln, welcher Bereich gedruckt werden soll. */ /*----------------------------------------------------*/ if editor = 1 thendo address isredit 'isredit process range #' select when rc = 0 then print_prout = 1 when rc = 4 thensay'RC from Edit-Cmd PROCESS RANGE = 'rc when rc = 8 thensay'RC from Edit-Cmd PROCESS RANGE = 'rc when rc = 12 thensay'RC from Edit-Cmd PROCESS RANGE = 'rc otherwisesay'Error on Edit-Cmd PROCESS RANGE, RC = 'rc exit (12) end
'isredit (cmd) = range_cmd' select when rc = 0 thendo say'==> the selected lines will be printed', ' to printer 'userpr()'.' end when rc = 4 then do say'==> the whole member will be printed', ' to printer 'userpr()'.' end otherwisesay'Error on Edit-Cmd RANGE_CMD, RC = 'rc exit (12) end say'Type to proceed or ''N'' to stop' pull answer if answer = ''thennop elseexit(4) 'isredit (first) = linenum .zfrange' 'isredit (last) = linenum .zlrange' end
address tso if print_prout = 1 thendo /*---------------------------------------------------*/ /* 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' */ /*---------------------------------------------------*/ 'NEWSTACK'/* get a new stack */ if editor = 1 thendo do lnr = first to last by 1 'isredit (lq) = line' lnr if lrecl <= pagewidth+10 thendo
record=' 'substr(lq,1,pagewidth-1) /* put current linenr to the stack */ queue record do j = 1 tolength(lq) ifsubstr(lq,j,1) <= "4A"X & substr(lq,j,1)<>" "then
lr=substr(lq,1,j-1)"."substr(lq,j+1,pagewidth-j) end end elsedo /* Zeile länger als pagewidth */ /* also aufbrechen */ queue' +++'lnr':' 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) end do j = 1 tolength(lr) ifsubstr(lr,j,1) <= "4A"X & substr(lr,j,1)<>" "then
lr=substr(lr,1,j-1)"."substr(lr,j+1,pagewidth-5-j) end
record=' 'lr ifsubstr(lq,i+1,lrecl) /= ' '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)' end /* delete previous dataset */
rc_p=msg('off')
rc_del = listdsi(proutdat) if rc_list = 0 then 'DEL ('proutdat')' if rc <> 0 thensay'rc1='rc /* allocate new dataset */
pw=pagewidth-1 'ALLOC DA('proutdat') NEW CATALOG SPACE(30,10)', 'BLKSIZE('pw*10') LRECL('pw')'
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 */ 'esfprint dsname('proutdat') dest('userpr()') fcb('dfcb') '
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 */ /*-------------------------------------------------------*/ if last = 9999 then 'esfprint dsname('full_dsn') dest('userpr()') fcb('dfcb') ' else 'esfprint dsname('full_dsn') dest('userpr()') fcb('dfcb') ', 'lines('first':'last')'
rc_pr = rc end
if rc_pr = 0 thendo if mem /= ''then say'Print of Member 'mem' in Dataset 'dsn else say'Print of Dataset 'dsn say'from line 'first' to line 'last' ended successfully' exit(0) end elsedo say'Error in printing Dataset 'full_dsn say'RC from PRINTDS: 'rc_pr exit(8) end
HELP: say' ' say'ISPF/PDF edit macro to print the current member on the printer ' say'with destination ' userpr() ' for user 'userid() '.' say' ' say'To run: ' say'1. If you want to print the whole member being edited: ' say' Enter ''prd'' on the COMMAND line and type . ' say' ' say'2. If you what to print only a part of the member being edited: ' say' Use the # line command to mark the range to be printed (for ' say' example: #120 - 120 lines or a block marked by the ## ...## ' say' command). Type ''prd'' on the COMMAND line to print the ' say' range. ' say' ' say'3. If you want to specify page orientation enter: ' say' ''prd quer'' for landscape ' say' ''prd hoch'' for portrait ' say' ' say'4. If you have a linelength > 132 characters the output will ' say' be broken into several lines per input line. ' say' ' say'5. If you have questions about this command, ' say' contact Hamburg -4244. ' Return
¤ Dauer der Verarbeitung: 0.22 Sekunden
(vorverarbeitet)
¤
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.