Informix Error -4653: No more than one BEFORE or AFTER INPUT/CONSTRUCT/MENU clause can appear in an INPUT/CONSTRUCT/MENU statement.
Cause and resolution
No more than one BEFORE or AFTER INPUT/CONSTRUCT/MENU clause can appear in an INPUT/CONSTRUCT/MENU statement.
There may be only one BEFORE block of statements to initialized each of these statement types. Make sure that the scope of all your INPUT, CONSTRUCT and MENU statements is correctly marked with END statements. Then combine all the preparation code into a single BEFORE block for each one.
Note: Error -4653 with this meaning is issued by 4GL after Version 4.1.
Oninit® Troubleshooting Guidance
Reasons / Common Causes
-4653 fires when an INPUT/CONSTRUCT/MENU statement has more than one BEFORE or AFTER
clause of the matching type — per the official guidance, only one such block is allowed per
statement type; issued by 4GL after Version 4.1.
- More than one
BEFORE INPUT/BEFORE CONSTRUCT/BEFORE MENUclause, per the official guidance. - More than one
AFTER INPUT/AFTER CONSTRUCT/AFTER MENUclause, per the official guidance.
Solutions / Resolution
- Make sure the scope of all
INPUT,CONSTRUCT, andMENUstatements is correctly marked withENDstatements, per the official guidance. - Combine all the preparation code into a single
BEFOREblock (and likewise forAFTER) for each statement, per the official guidance.
Examples
Duplicate BEFORE INPUT clauses
INPUT BY NAME rec.*
BEFORE INPUT
MESSAGE "Entering order"
BEFORE INPUT
LET status = "New"
-- -4653: only one BEFORE INPUT is allowed
END INPUT
Corrected
INPUT BY NAME rec.*
BEFORE INPUT
MESSAGE "Entering order"
LET status = "New"
END INPUT
Diagnostic Checks
- Check the statement's
ENDboundary, and combine any duplicateBEFORE/AFTERclauses of the same type into one.
Related Errors / Related Topics
- -4490 — "You cannot have multiple BEFORE clauses for the same field." A related
duplicate-clause restriction, about per-field
BEFOREclauses rather than statement-levelBEFORE/AFTER INPUT/CONSTRUCT/MENU. - -4644 — "The HELP and ATTRIBUTE clauses each can be specified only once." A related
duplicate-clause restriction, for
HELP/ATTRIBUTErather thanBEFORE/AFTER.
An INPUT/CONSTRUCT/MENU statement has more than one BEFORE or AFTER clause of the
same type — combine them into one.