M204.2840
M204.2840 Statement has too many intermediate results
This error usually occurs with a Store Record statement that references more than 127 subscripted values in a SOUL array. An internal table of 512 bytes is allocated by the SOUL compiler to hold temporary variables. This table consists of one fullword counter and 127 fullwords of data. Each of those 127 fullwords represents a temporary variable. This change in the handling of temporary variables improves performance and reduces space requirements in VTBL and STBL.
This error could also occur with a Print statement in Model 204 version 7.4 or, less likely, with a Find, Audit, or Update record statement.
Response:
Store Record: Break up the statement into multiple parts as in the following example:
STORE: STORE RECORD FIELDX = %ARRAY(1) FIELDX = %ARRAY(2) ... FIELDX = %ARRAY(127) END STORE FRN IN STORE FOR %X FROM 128 TO 999 ADD FIELDX = %ARRAY(%X) END FOR END FOR etc.
Find: Break up the statement into multiple parts as in the following example:
FD1: IN filename FD FIELDX = %ARRAY(1) FIELDX = %ARRAY(2) ….. FIELDX = %ARRAY(127) END FIND .. FD2: FD IN FD1 FIELDX = %ARRAY(128) …… END FIND
Update Record: Break up the statement into multiple parts, similar to the Store Record example.
Audit: Break up the Audit into multiple Audit statements, each having a limit of 127 variable array references.
Print: The issue has been resolved in SirMods 8.1. Therefore, the best solution for Model 204 version 7.4 is to rerun the job with a load module that includes SirMods 8.1 linked in. As of Model 204 version 7.5, SirMods is totally integrated into the Model 204 nucleus, so no special linking is required.
Message attributes:
RETCODEO=0 | Sets online return code |
---|---|
RETCODEB=4 | Sets batch (single user) return code |
CLASS=E | Error class; the message can be suppressed with the X'04' bit setting of the MSGCTL parameter |
AUDITER | Writes the message with line type ER to the audit trail |
COUNT | Increments the error count (ERCNT) parameter |
ECHO | Displays the line that caused the error |