To programmatically invoke another form module, a form can execute three Built-in Oracle Forms procedures:
When a form executes OPEN_FORM to invoke another form, the first form remains displayed, and end users can navigate between the forms as desired. An opened form can share the same database session as the form from which it was invoked, or it can create a separate session of its own. For most GUI applications, using OPEN_FORM is the preferred way to implement multiple-form functionality.
When a form executes NEW_FORM to invoke another form, Oracle Forms exits the first form and releases its memory, and then loads the new form (i.e., the second form completely replaces the first. If changes are pending in the first form, Oracle Forms will prompt the end user to save them before the new form is loaded.
When a form executes CALL_FORM to invoke another form, the called form is modal with respect to the calling form. Any windows that belong to the calling form are not usable until the called form is exited and control returns to the calling form.
Both OPEN_FORM and CALL_FORM allow you to leave the calling form displayed. Using this technique, you can integrate forms so tightly that end users are not aware that they are invoking separate forms.
Oracle Forms maintains any locks (obtained by a form) across both OPEN_FORM (in the same session), CALL_FORM and NEW_FORM procedure calls. Thus, a called form automatically has the same locks as its calling form.
CALL_FORM is an unrestricted procedure, OPEN_FORM and NEW_FORM are restricted. Therefore, CALL_FORM is valid in Enter Query mode, while OPEN_FORM and NEW_FORM are not.