Terminal control/Dimensions

Revision as of 22:28, 16 October 2010 by rosettacode>Dkf (→‎{{header|Tcl}}: is translation)

Determine the height and width of the terminal, and store this information into variables for subsequent use.

Task
Terminal control/Dimensions
You are encouraged to solve this task according to the task description, using any language you may know.

Forth

Works with: GNU Forth

<lang forth>variable term-width variable term-height

form ( width height ) term-height ! term-width !</lang>

PureBasic

PureBasic does not have native functions for reading the size of this window, but supports API-functions that allows this.

This code is for Windows only. <lang PureBasic>Macro ConsoleHandle()

 GetStdHandle_( #STD_OUTPUT_HANDLE )

EndMacro

Procedure ConsoleWidth()

 Protected CBI.CONSOLE_SCREEN_BUFFER_INFO
 Protected hConsole = ConsoleHandle()
 GetConsoleScreenBufferInfo_( hConsole, @CBI )
 ProcedureReturn CBI\srWindow\right - CBI\srWindow\left + 1

EndProcedure

Procedure ConsoleHeight()

 Protected CBI.CONSOLE_SCREEN_BUFFER_INFO
 Protected hConsole = ConsoleHandle()
 GetConsoleScreenBufferInfo_( hConsole, @CBI )
 ProcedureReturn CBI\srWindow\bottom - CBI\srWindow\top + 1

EndProcedure

If OpenConsole()

 x$=Str(ConsoleWidth())
 y$=Str(ConsoleHeight())
 PrintN("This window is "+x$+"x"+y$+ " chars.")
 ;
 Print(#CRLF$+"Press ENTER to exit"):Input()

EndIf</lang>

Retro

This information is provided by Retro in the fh (height) and fw (width) variables. You can manually obtain it using the io ports.

<lang Retro>-3 5 out wait 5 in !fw -4 5 out wait 5 in !fh</lang>

REXX

Works with: brexx
Works with: regina
Works with: rexximc

Rexx does not provide basic terminal control as part of the language. However, it is possible to determine the size of the terminal window by using external system commands:

<lang rexx> width = 'tput'( 'cols' ) height = 'tput'( 'lines' )

say 'The terminal is' width 'characters wide' say 'and has' height 'lines' </lang>

Tcl

Translation of: UNIX Shell

<lang tcl>set width [exec tput cols] set height [exec tput lines] puts "The terminal is $width characters wide and has $height lines"</lang>

UNIX Shell

Works with: Bourne Shell
Works with: bash

<lang sh>#!/bin/sh WIDTH=`tput cols` HEIGHT=`tput lines` echo "The terminal is $WIDTH characters wide and has $HEIGHT lines"</lang>