We have an automated method which takes our in-house report specification files and creates BIRT, Cognos and other product-specific report specifications, and we're looking to expand this to QMF on the mainframe as well.
Up to now, in our proof of concept, we've been using the QMF product to generate report queries and forms manually, but this could be made much more efficient if we code up a translation layer, similar to our other translators.
To do so, we basically need to re-engineer the file format for QMF forms. The report queries themselves are easy since they're just the SQL with some parameter substitution (I expect some serious issues with the GDDM charts but that's down the track). However, the forms, while text-mode are somewhat problematic since they contain such readable content as:
H QMF 07 F 04 E V W E R 01 03 93/07/20 09:17
T 1110 003 011 1112 007 1113 040 1114 007 1115 006 1116 005 1117 005 ...
R CHAR Date OMIT 0 10 ...
R CHAR Machine name 1 16 ...
R NUMERIC CPU average usage 1 8 ...
V 1201 001 0
V 1202 001 1
T 1210 002 003 1212 004 1213 006 1214 055
R 1 CENTER &TITLE
R 2 CENTER Date: &1
V 1301 001 1
V 1302 001 0
T 1310 001 003 1312 004 1313 006 1314 055
R 1 CENTER &PRODNAME: &REPID
V 1401 002 NO
V 1402 001 1
V 1403 001 0
T 1410 001 003 1412 004 1413 006 1414 055
R 1 RIGHT
V 1501 001 1
V 1502 003 YES
V 1503 003 YES
:
and so on ...
Does anyone know if there is such information available? I've searched the web to no avail, most links seem to lead to IBM's user doco which is pretty silent on the matter.
The documentation can be found in the QMF 9.1 documentation regarding exports.
The tables in there, combined with the following information, should allow full analysis of the file content.
The V
lines, if present, affect the following T/R
combinations. For example, V 1201 001 0
(all codes like 1201
and their meaning are described in the given link) states that the next table has zero blank lines before the heading.
Note that the parameters consist of a length integer 001
followed by the actual parameter. The size of the length integer is dictated in the H
line, as documented in the link above. This allows great flexibility in defining the content of the file.
Tables consist of a T
line followed by one or more R
lines. The T
line specifies the type of table and the number and format of the R
lines constituting that table. An example of:
T 1210 002 003 1212 005 1213 007 1214 020
R 1 CENTER &TITLE
R 2 CENTER Date: &1
<-5-> <--7--> <--------20-------->
(that last line is for explanatory purposes, not part of the file) has the following meaning:
1210
is the page heading table (as per the link).002
R
lines.003
columns in each R
line, each with a space between them:
1212
is the page heading line number of size 005
.1213
is the page heading alignment of size 007
.1214
is the page heading text of size 020
.