Skip to content

Commit 672cd87

Browse files
committed
Merge readmes
1 parent 710f61f commit 672cd87

File tree

2 files changed

+149
-148
lines changed

2 files changed

+149
-148
lines changed

README.md

Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,151 @@
11
# mq-smf-csv
22
Simple formatter for MQ's SMF records to assist with import to spreadsheets
3+
4+
README for mqsmfcsv
5+
===================
6+
7+
This package has been created to simplify the job
8+
of doing your own analysis of MQ SMF records from a z/OS system,
9+
by making it easy to import formatted records into
10+
a database or spreadsheet.
11+
12+
The program takes the data from a z/OS file, and runs on
13+
a Windows or Unix system, creating standard CSV
14+
(comma-separated value) output files.
15+
16+
Unlike packages such as SupportPac MP1B, there is no interpretation
17+
at all of the SMF data. That can be done by your own spreadsheet or
18+
database programs and macros.
19+
20+
This makes the code for the program
21+
very easy to understand; all the structures in the SMF records
22+
are printed directly.
23+
24+
25+
Usage
26+
=====
27+
Collect the MQ SMF data in the usual way.
28+
Dump that data to a z/OS file using a tool such as ...
29+
Then download that file to
30+
31+
The output files are written to a directory that you name
32+
on the command line. There is one file for each type of
33+
element - QPST, WTID etc. The files contain a line of
34+
column headers, followed by the actual data with each
35+
field separated by a comma. Spreadsheets such as LibreOffice
36+
or Excel can then import the data directly.
37+
38+
No attempt is made to explain the column headers; these come
39+
straight from the field names. More information can be found in
40+
the csqdsmfc.h header file or the product documentation.
41+
42+
Date and time are split into separate columns; the time
43+
includes a microsecond portion which is separated using ',' as using '.'
44+
as the decimal point seems to confuse the automatic importers on
45+
several spreadsheets. There is no information directly available about
46+
timezone offsets, so it is possible that the timestamps could be either
47+
GMT (CUT) or localtime, depending on system configurations.
48+
49+
Durations are split into separate columns for
50+
seconds and microseconds. This is shown in the column headings.
51+
52+
Options
53+
=======
54+
55+
printf("Usage: mqsmfcsv [-o <output dir>] [-a] [ -d <level> ]\n");
56+
printf(" [ -i <input file> [-m <max records>] [-r ] [-t <ticker>]\n");
57+
printf(" -a Append to existing files if they exist. Default is overwrite\n");
58+
printf(" -d <level> Debug by dumping binary records (level = 1 or 2)\n");
59+
printf(" -i <Input file> Default is to read from stdin\n");
60+
printf(" -m <Max records> End after formatting M records. Default to process all\n");
61+
printf(" -o <Directory> Where to put output files\n");
62+
printf(" -r Do not print '=' on numeric-looking strings\n");
63+
printf(" -t <Ticker> Print progress message every T records\n");
64+
65+
Design and Development
66+
======================
67+
68+
Binaries are provided for some platforms. For other
69+
platforms, you will need to compile the code yourself.
70+
Familiarity with Makefiles and compiling C programs is
71+
assumed.
72+
73+
First, you need to get a copy of the MQ product-provided
74+
header file on z/OS that defines the structures for SMF
75+
elements. This is called csqdsmfc.h and can be found on your
76+
z/OS installation. Download a copy of that to your system.
77+
78+
Using the provided Makefiles as a template, set the
79+
appropriate compilation options for your platform.
80+
For Unix platforms, the "M" script may be a convenient
81+
way to override options in the Makefile, as most Unix
82+
platforms are likely to be very similar in how to build
83+
programs.
84+
85+
The Makefiles take the z/OS header file and make some
86+
minor transformations so that it is suitable for
87+
compiling on other platforms.
88+
89+
Note that the mqsmfcsv program needs to be compiled with
90+
fixed datatype sizes - in particular, "int" is 32-bit, and
91+
"long long" is used to represent a 64-bit value. Generally
92+
this means that the program itself is compiled as 32-bit.
93+
94+
The current version of this program was developed based on the
95+
MQ V8 SMF structures; it will run against data
96+
generated by older queue managers
97+
but will not compile if an older version of csqdsmfc.h is used.
98+
99+
Each data structure is formatted by its own function, contained in
100+
the print*.c modules. Most of these are very straightforward to
101+
understand. Some common macros defined in mqsmf.h make it
102+
easy to add each field from the structure; they also simplify handling
103+
common fields that need to be printed on every type of SMF element.
104+
105+
A few special cases exist, such as handling bitfields or arrays. But
106+
again, the code where these are used ought to be obvious, and can be
107+
used as strategies for handling new types of SMF element.
108+
109+
Sample data
110+
===========
111+
The package includes a tiny amount of sample data that can be used to
112+
demonstrate the formatting.
113+
114+
115+
116+
downloading ...
117+
118+
119+
Sequential, Variable Length Records
120+
121+
The following is a sample FTP script to retrieve (or GET) a sequential file with variable-length records from a Mainframe system to a Windows system. This FTP script is for using at the client or Windows system.
122+
123+
userid
124+
password
125+
CD ..
126+
PWD
127+
BINARY
128+
QUOTE SITE RDW
129+
GET mainframe.dataset.name drive:\directory\filename.ext
130+
QUIT
131+
132+
The file must be transferred in BINARY. This will maintain the EBCDIC-encoding and the mainframe
133+
numeric formats for packed-decimal, binary and zoned-decimal data.
134+
135+
One of the following FTP statements must be used prior to a GET or PUT statement in order to
136+
download the Record-Descriptor-Word (RDW) and the possible Block-Descriptor-Word (BDW). The BDW and
137+
RDW are in binary format so it is critical to download in binary even if the records in the file
138+
are all text strings. Prior to a GET use one of the following statements.
139+
QUOTE SITE RDW
140+
or
141+
LITERAL SITE RDW
142+
143+
If the FTP process is to be executed on the mainframe the GET statement will need to be replaced
144+
with a PUT and the QUOTE or LITERAL statement will need to be replaced with the following statement.
145+
146+
LOCSITE RDW
147+
148+
Once the file is transferred it is a mirror of the mainframe format with EBCDIC-encoding. Each
149+
record is preceded by the Record Descriptor Word (RDW) and possible Block Descriptor Word (BDW) and
150+
must be converted to a Micro Focus formatted sequential file with variable length records. This
151+
process is described in the following sections of this document.

README.txt

Lines changed: 0 additions & 148 deletions
This file was deleted.

0 commit comments

Comments
 (0)