En lo personal uso una función que hice hace algun tiempo. Creo que la puedes adaptar a tu necesidad.
Esta función te genera un arreglo publico donde guardo el nombre de la variable y su contenido. Al final te retorna el numero de elementos que tendrá el arreglo ADOSEnv, espero te sirva.
LOCAL cFile, cCMD, cVars, nLines, x, cNombre, cContenido
LOCAL ARRAY arrVars(1)
*
IF TYPE('ADOSEnv', 1) = 'A'
RELEASE ADOSEnv
ENDIF
PUBLIC ARRAY ADOSEnv(1)
*
cFile = FULLPATH('') + SYS(3) + '.TXT'
cCMD = '!SET > &cFile'
&cCMD
*
cVars = FILETOSTR(cFile)
ERASE (cFile)
nLines = ALINES(arrVars, cVars)
DIMENSION ADOSEnv(nLines, 2)
FOR x = 1 TO nLines
cNombre = GETWORDNUM(arrVars(x), 1, '=')
cContenido = GETWORDNUM(arrVars(x), 2, '=')
ADOSEnv(x, 1) = cNombre
ADOSEnv(x, 2) = cContenido
ENDFOR
*
RETURN nLines
Saludos,
Walter Valle