Terminal control/Dimensions
You are encouraged to solve this task according to the task description, using any language you may know.
Determine the height and width of the terminal, and store this information into variables for subsequent use.
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
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
<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
<lang sh>#!/bin/sh WIDTH=`tput cols` HEIGHT=`tput lines` echo "The terminal is $WIDTH characters wide and has $HEIGHT lines"</lang>