This assignment’s objective is to give you experience using the five Assembler QSAM macros and hone
your Assembler programming skills. You will create the same reports you did for Assignment 5.
Name this program and utilize the file the same way you did in Assignment 5.
Write an Assembler QSAM program that creates the same two well-designed printed reports as the
COBOL program you wrote for Assignment 5. Read and follow the Programming Notes below VERY
Programming Notes (READ THESE CAREFULLY!):
• Use the QSAM Assembler program provided to you for Assignment 3A as a starting point.
• Name your PDSE member for this assignment and only so that your
progress can be reviewed by Mr. Decker at any point.
• Be sure to back up your PDSE periodically; if it is corrupted or you accidentally delete it, it
cannot be restored.
• Write your Assembler QSAM program using (Get Move) and (Put Move) macro formats first.
Once you get it working perfectly, then change to the macro formats in the following two bullet points.
• Use the version of the macro for accessing . Use a for each of the two input
record types and do NOT move ( ) the data into your program, i.e., access the data where it was
located by register 1 when the with was issued. This is considered “in situ” processing.
• Use the and versions of the and macros for accessing the temporary data set for low
• Use the version of the macro for writing records to the output for your two reports.
• Do not use literals except for 1) adding 1 to a packed decimal accumulator variable, i.e., page counter,
or 2) any shorter numeric-edited output edit patterns. Note that longer output edit patterns should be
defined in storage instead of using a literal.
• Use plenty of wisely-placed asterisks in column 1 to spread your code out vertically for easier reading.
• Macro names, s, s, mnemonics, etc., all go in column 10. Operands and storage definitions begin
in column 16 (Note that the names of some IBM macros are so long that they require parameters start
in a column following 16. If so, that’s okay).
• Use a above your Assembler program main doc box to suppress macro expansion in
your source listing.
• Immediately following the required , use the 32-byte boundary technique to easily identify
your storage in a dump.
• Define all of your s above the . All names and field names must begin with a
dollar sign ( ).
• Remember that the temporary data set will only need a single .
• Test each file for success using . If the return code is something other than 0,
force an abend using the macro with a different code for each .
• Do all arithmetic in packed decimal. Only your line counter should use register arithmetic because it
is never printed!
• Do NOT use to move packed decimal numbers. Use instead but only move them if
CSCI 465 Assignment 6 – QSAM Page 2 of 2
• Use the macro ONLY once.
• Declare s at the end of your storage with any required EOF routines and EOF flags
declared immediately following the definition for that file.
• Use good line documentation and other documentation as described in the CSCI 465 Coding and
• Be sure that ALL 133-byte output line definitions have spaces defined in between the fields that
will receive values. Any invalid or non-printable characters will result in fragmented output!
• Do NOT use subroutines of any type.
• Be sure you are using the following standard entry and exit linkage for your program:
Standard Entry Linkage
Standard Exit Linkage with RC = 0 in R15
• Use the advanced Assembler techniques discussed in class. For example, to set a register to a value
between 1 and 4095, use , to set a register to 0, subtract the register from itself, to decrement a register
by 1, use , etc.
As before, what you will hand in will be one single job .txt file produced by a job with an instream
Assembler program followed by a Binder step followed by a fetch and execute step similar to what you
have done before.
Note that, if you were to print the reports from Assignment 5 and those produced by this assignment’s
Assembler QSAM program, you should be able to hold them up to the light and see only differences in the
date and time. To do this, use your COBOL definitions of your print lines as a reference when defining
your Assembler print lines.
You are required to use the field names provided in the document you used for the same purpose for
Assignment 5. Note that Mr. Decker may alter and add to this list as he develops his own version.
This will assist your TA and instructor in helping you and also form good habits.
What to Turn In
Use Retrieve Jobs to download and convert your output and submit your file on Blackboard as before.