The new ABL interface to Proparse is getting there!
Output:
Frame: DEFAULT-FRAME VARIABLE EDITOR-1 RECTANGLE RECT-42 BUTTON BUTTON-8
Code:
FOR EACH symbolRecord WHERE symbolRecord.progressType EQ NodeTypes:Frame#: frame% = CAST(symbolRecord.symbol, Frame). PUT UNFORMATTED SKIP(1) "Frame: " frame%:getName() SKIP . list = frame%:getAllFieldsAndWidgets(). DO counter = 1 TO list:size(): symbol = CAST(list:getNthElement(counter), Symbol). PUT UNFORMATTED SPACE(2) NodeTypes:GetName(symbol:getProgressType()) SPACE symbol:getName() SKIP . END. END.