Get the current cursor position
[Autolink] Menu
/* sample routine to get the current cursor position with plain REXX */
/* and ANSI commands */
/* Original code is from the ANSICD package from Jamie Hoglund */
parse value GetCursorPos() with col row
say "At program start the cursor was at " || ,
"Column " || col || ", Row " || row || "."
exit 0
/* ------------------------------------------------------------------ */
/* function: Get the current cursor position */
/* */
/* call: GetCursorPos */
/* */
/* returns: col row */
/* */
/* note: This function works only for display sizes up to 200 for */
/* columns or rows. The upper left corner is 1,1. */
/* The REXXUTIL function SysCurPos uses zero based values */
/* (the upper left corner is 0,0). */
/* Caution: v2.90*/
/* The REXX Queue must be empty for this code to work! */
/* If the REXX Queue is not empty, you can use code */
/* like */
/* - create a new */
/* - make the new queue the default queue */
/* - call GetCursorPos */
/* - make the old queue the default queue again */
/* - delete the new queue */
/* */
GetCursorPos: PROCEDURE
usedChars = ":;<=>?@ABCD"
Rc = Charout(,D2C(27) || "[6n")
Pull Q
/* v2.30 */
parse var q 3 y1 +1 y2 +1 3 row +2 6 x1 +1 x2 +1 6 col +2 .
if pos( y1, usedChars ) <> 0 then
row = 10 || y2
if pos( x1, usedChars ) <> 0 then
col = 10 || x2
return col row
[Back: Check if ANSI is active - 2 -]
[Next: Get the current screen size]