You cannot assign and reference an alias in the same procedure. You must assign an alias to a logical database name prior to compiling and running procedures that use that alias. For example, the procedure in i-alias1.p fails to compile when it reaches the FOR EACH statement, because you cannot assign and reference the alias myalias in a single procedure.
i-alias1.p
/* Note that this procedure does not work */
CREATE ALIAS myalias FOR DATABASE sports2000.
FOR EACH myalias.Customer NO-LOCK:
DISPLAY Customer.
END.
To solve this problem, split i-alias1.p into two procedures, as in the following examples:
i-alias2.p
CREATE ALIAS myalias FOR DATABASE sports2000.
RUN i-dispcust.p.
i-dispcust.p
FOR EACH myalias.Customer NO-LOCK: /* myalias.Customer */
DISPLAY Customer. /* myalias.Customer */
END.