HP OpenVMS Systemsask the wizard |
The Question is:
In DCL, how do I determine the terminal width without having to run SHOW
SCREEN.
I want to do this within a command file and it is really cumbersome to glean
the output from SHOW SCREEN. I want to avoid unnecessarily doing SET
TERM/WID=132 within a command file because it clears the screen and I cannot
see the results of my last com
mand. This is a major nuisance because I often want to cut and paste
result from my last command into my next command.
I searched the FAQ and the ASK THE WIZARD info back to 1995 but there is no
mention of determining the width via a DCL lexical function. I used HELP
LEX * and it looked like F$GETDVI would be the answer because it offers most
of the values from SHOW TERM
. But unfortunately F$GETDVI does not return TT_WIDTH.
Sincerely,
David.G.Harding@eds.com
(314)344-4164 (St.Louis MO)
P.S. Here is a command file that I created to set a global symbol called
WIDTH. If there is no better solution then perhaps someone reading your
ASK THE WIZARD page can benefit from this
$!--------------------------------------------------------------------------
$! WIDTH.COM:
$! Purpose: Determine width that VMS thinks the terminal is set to
$!
$ WIDTH==0 !make global so next process can use this value!
$ SHOW TERM/BRIEF/OUT=TERMINFO.OUT
$ SEARCH TERMINFO.OUT "Width: " /OUT=WIDTH.OUT
$ DELETE TERMINFO.OUT; !cleanup
$!
$ OPEN/READ IPFILE WIDTH.OUT /ERR=ERR_OPEN
$ READ IPFILE IPLINE /ERR=ERR_READ
$ CLOSE IPFILE
$ DELETE WIDTH.OUT; !cleanup
$!
$ LWIDTH = F$LOCATE("Width:",IPLINE)
$ WIDTH == F$EXTRACT(LWIDTH+7,LWIDTH+9,IPLINE)
$!
$! WRITE SYS$OUTPUT "FYI: TERMINAL WIDTH=''WIDTH'"
$!--------------------------------------------------------------------------
The Answer is :
$ width=F$GETDVI("TT","DEVBUFSIZ")
|