PROCEDURE PrintStruAndRec LOCAL nCtr, cFldName FOR nCtr = 1 TO FCOUNT() cFldName = FIELDS(nCtr) ? nCtr,cFldName,TYPE(cFldName),FSIZE(cFldName),EVAL(cFldName) ENDFOR PROCEDURE BetterStruAndRec LOCAL aFlds[1,5],nCtr,nFlds, cFont nFlds = AFIELDS(aFlds) cFont = _Screen.FontName _Screen.FontName = 'Courier New' FOR nCtr = 1 TO nFlds ? nCtr, ; PADL(aFlds[nCtr,1],12), ; aFlds[nCtr,2], ; aFlds[nCtr,3], ; IIF(aFlds[nCtr,4]>0,aFlds[nCtr,4],' '), ; EVAL(aFlds[nCtr,1]) ENDFOR _Screen.FontName = cFontAFIELDS() provides a good deal of added information if you want it.