Alex,
The fact that FIRST PAGE HEADER doesn't allow a variable number of PRINT statements doesn't mean it shouldn't be used.
You could do ...
DEFINE first_page RECORD
date DATE,
time DATETIME HOUR TO SECOND,
who CHAR(10),
program CHAR(20),
param1 STRING,
param2 STRING,
param3 STRING
FIRST PAGE HEADER
FOR i = 1 TO number_of_parameters_entered()
CASE i
WHEN 1 LET first_page.param1 = get_param(i)
WHEN 2 LET first_page.param2 = get_param(i)
...
END CASE
END FOR
PRINTX first_page.*
or if the variable number of parameters could be appended into a string for display inside a WordWrapBox
DEFINE first_page RECORD
date DATE,
time DATETIME HOUR TO SECOND,
who CHAR(10),
program CHAR(20),
param STRING
DEFINE sb base.StringBuffer
FIRST PAGE HEADER
LET sb = base.StringBuffer.creaet()
FOR i = 1 TO number_of_parameters_entered()
IF i > 1 THEN
CALL sb.append(get_newline_char())
END IF
CALL sb.append(get_param(i))
END FOR
LET first_page.param = sb.toString()
PRINTX first_page.*
As for the first page in the report structure couldn't you have the following structure ...
report.4rp
Page Root
Contents of first page (X-size, Y-size=max)
Page Root
Contents of second and subsequent pages as per normal report