Olá!
Só para enriquecer o conteúdo, segue um exemplo de manipulação de gets, sem usar biblioteca de terceiros. Creio que atende à necessidade do OP.
Function Main()
LOCAL cNome:=Space(38)
LOCAL cTel:=Space(12)
LOCAL GetList := {}
cls
SetBlink( .F. )
@ 12,05 Say "Nome :" ;
Color "GR+/N" ;
Get cNome ;
Color "N/W, N/W*" ;
Pict "@K" ;
When { || SetPos( GetActive():row + 10, 5 ), DispOut( GetActive():name ), .T. } ;
Valid { || SetPos( GetActive():row + 10, 5 ), DispOut( Space( 10 ) ), .T. }
@ 13,05 Say "Telefone :" ;
Color "GR+/N" ;
Get cTel ;
Color "N/W, N/W*" ;
Pict "@K" ;
When { || SetPos( GetActive():row + 10, 5 ), DispOut( GetActive():name ), .T. } ;
Valid { || SetPos( GetActive():row + 10, 5 ), DispOut( Space( 10 ) ), .T. }
// faz o read sem destruir o GetList
ReadModal( GetList )
// Percorre o GetList alterando o conteúdo das variáveis
AEval( GetList, { |e,p| e:setFocus(), ;
e:varPut( PadR( "Get " + Ltrim( Str( p ) ), Len( e:original) ) ), ;
e:killFocus() } )
// Novo read
ReadModal( GetList ); GetList := {}
@ 17, 05 Say "Nome : " + cNome
@ 18, 05 Say "Fone : " + cTel
SetPos( 20,05 )
WAIT "FIM - Tecle algo..."
RETURN NIL
//--------------------------------------------------------------------------------------------------