Logical names are defined at execution time (runtime) and not during the compilation phase. If you define a logical name within a statement, the logical name is not translated during the compilation phase, consequently it is executed without being defined, which will lead to an error. DTR> READY YACHTS DTR> BEGIN [Looking for statement] CON> FN$CREATE_LOG("FORM_DIR","DTR$LIBRARY:FORMS"); CON> FOR X IN YACHTS [Looking for statement] CON> WITH_FORM YACHT IN FORM_DIR [Looking for SEND or RECEIVE statement] CON> SEND FROM X TO BOAT; CON> END Error opening DECforms form file DISK:[DALFY]FORM_DIR.EXE; .