Preliminary response from tech support is that the EXECUTE statement is not designed to send multiple statements to the RDBMS. Each EXECUTE statement should only be used to send a single statement to the RDBMS.
So even though EXECUTE was able to send multiple statements in this case, I guess it's 'off-label use' and therefore the lack of proper logging is unlikely to be filed as a defect.
UPDATE: final response from tech support said that EXECUTE can be used to send multiple statements, but the logging doesn't work (as shown here). So I still see this as a defect, but I don't think they were convinced. They seemed to say it's working fine; if you want the logging to work, only send one SQL statement per EXECUTE statement.
From the docs: https://go.documentation.sas.com/doc/en/pgmsascdc/9.4_3.5/acreldb/n0pj5uu3i328pmn1fackclh2xnd9.htm
I read "Sends DBMS-specific, non-query SQL statements to the DBMS" and "The EXECUTE statement sends dynamic non-query, DBMS-specific SQL statements to the DBMS and processes those statements" to imply that an EXECUTE block sending multiple statements is allowed.
But in the syntax section, it does use singular throughout for the required argument:
EXECUTE (dbms-specific-sql-statement) BY dbms-name | alias;
(dbms-specific-sql-statement)
a dynamic non-query, DBMS-specific SQL statement. This argument is required and must be enclosed in parentheses. The SQL statement might be case sensitive, depending on your DBMS, and it is passed to the DBMS exactly as you enter it.
On some DBMSs, this argument can be a DBMS stored procedure. However, stored procedures with output parameters are not supported in the SQL pass-through facility. Furthermore, if the stored procedure contains more than one query, only the first query is processed.
Any return code or message that is generated by the DBMS is available in the macro variables SQLXRC and SQLXMSG after the statement executes. See Macro Variables for Relational Databases for more information about these macro variables.
... View more