Assembler Proficiency Self-test
As part of our curriculum of assembler courses we have developed two
assembler proficiency tests. We use these tests for our customers to
assess the initial and/or ending level of assembler proficiency of our
students.
One of these tests is now being made available on the web as an
Assembler Proficiency Self-test. The other test is available upon
request.
This self-test enables you to assess your level of assembler
proficiency. You have the option to:
- administer the test and judge results by gut feeling (free)
- administer the test and have us score your results (paid)
- have us administer and score the test (paid)
For scoring results, we use a set of standard answers. This set has
been tested and verified in the field and has proven to measure
candidates' assembler proficiency quite accurately.
For questions on our curriculum or on
this self-test, its scoring, or about other testing material, please
contact Abe Kornelis.
Alternatively, you might want to check The Trainer's Friend's
Curriculum or contact
Steve Comstock.
Instructions and assignments for the self-test.
This test assumes a z/OS environment. For z/VM, z/VSE, z/TPF and/or
z/Linux adapted tests can be made upon request.
This test consists of 60 questions (theory) and 3 programming
assignments. For each of these parts you have a specific amount of
time available as follows:
After completing any assignment within time, the remaining time can
be used for any of the other assignments.
Maximum scores:
You may use your books and notes. Please answer the questions using
your own wording; literally transcripted texts will be treated as
incorrect answers.
Please insert your answers following each question. For scoring,
please submit your answers by
e-mail.
- What is the difference between a DSECT and a CSECT?
- For what purpose does one use the LTORG instruction?
- What is the range of a base register?
- What are modal instructions? What kind of instructions are these?
- What relationship exists between AMODE and RMODE?
- For what purpose does one use a LOCTR?
- How many digits can be contained in a packed decimal field? Why?
- What requirement(s) does a program need to satisfy in order to
qualify as reusable?
- What requirement(s) does a program need to satisfy in order to
qualify as reenterable?
- What is the difference between a Y-con and an S-con?
- What is the function of the PSW? Name the 4 most important
subfields.
- What is a DCB, what is an ACB, and what is the difference?
- What is a CDE? What is it used for?
- How does one round a packed decimal number?
- How does a re-entrant program find a place to store its variables?
- How does one create a packed decimal number from a
"readable" one?
- In what ways can one change a packed decimal number into readable
text?
- When formatting numeric output, how does one specify on the
appropriate instruction that leading zeros are to be suppressed? How
do you specify which character is to replace leading zeroes?
- Special place holders can be used in an edit pattern. Give the
meaning associated with each specific value.
- What is the difference between ED and EDMK and when does this
effect vanish (read: not occur)?
- What is the difference between an index register and a base
register?
- Describe exactly the effect of MR 4,7
- Describe exactly the effect of DR 6,9
- For what use are the first, second, and third operands
(respectively) of the EQU instruction intended?
- What 32-bit instructions do we have for controlling loops?
- What do we use ORG for?
- How does one exchange the contents of two fields A and B in
virtual strage without using a third field? Same question for two
64-bit registers.
- How does one shift the contents of a register over a variable
number of bit positions?
- What does the EX instruction do? What is a common application?
- How does a program find the contents of the parameter specified on
the invoking EXEC JCL card? (Assume MVS / zOS)
- What is the meaning of MACRF=GL on a DCB macro invocation?
- What is the meaning of RECFM=VBS and RECFM=FBS respectively?
- What is the difference between EODAD and SYNAD?
- What is a V-con and what is the difference between a V-con on the
one hand and an A-con with an EXTRN on the other hand?
- What is an address space? What is a Task?
- From your TCB you can follow your PRB chain. For what reason would
one want to do that?
- What does the SNAP macro do? For what purpose does one use SNAP?
- What is an RDW? What is a BDW? What is the difference?
- What does one use a DCBE for?
- What is the difference between static and dynamic linkage? Please
specify the major advantage of each method.
- What are LPA and JPA? What is the difference?
- Which macro do you use to undo the effects of the LOAD macro?
- What is the difference between LINK and CALL?
- What is a subpool? What is the purpose of Cell Pool Services?
- What does AGFR Do?
- What does CY do?
- What is the difference between LLGT and LLILL?
- What do SLAG and RLL do?
- What is the difference between HFP, BFP, and DFP?
- What is the difference between ALRK and ALSIH?
- What is the difference between LAAG and LOCG?
- What is the dead zone? Why is it called the dead zone?
- For what purpose do we use IEABRC? How does IEABRC work?
- Which types of variables do we use within macros?
- Describe how one concatenates SETC variables and how one specifies
substrings. Give an example of each.
- Describe how one designates an element in an array of SETC
variables. Give an example. What is the maximum number of dimensions
that HLASM supports for SETx variables?
- Describe how one designates a created set symbol. Give an example.
- What is the difference between between a label and a sequence
symbol?
- Which instruction does one use to implement a loop during
conditional assembly?
- What is the difference between DC A(FIELD) and DC AL4(FIELD)?
Please write a program that accepts a JCL-parameter. This parameter
is to contain a valid number between 0 and 4095 inclusive. The program
should process the parameter according to the following criteria:
- If a valid value is found, the program should end using the
specified value as its return code.
- If no parameter was passed the program should issue a user abend
101.
- If the parameter does not contain a valid integer number, then the
program should issue a user abend 102.
- If the parameter contains a number outside of the defined range,
then the program should issue a user abend 103.
- For any error detected a clear error message should be issued.
Please write a complete sub-program named ASSGN3 that is to
calculate a tax-deductible item as follows:
- If the nominal amount for the tax-deductible item is less than the
lower threshold, the deductible amount is set to zero. The lower
threshold is a percentage of gross income. However, this threshold
can never be less than the "minimum amount".
- If the nominal amount for the tax-deductible item exceeds the
upper threshold, the deductible amount is maximized at that
threshold. The upper threshold is a percentage of gross income.
However, this threshold can never exceed the "maximum
amount".
- Calculation as specified above yields a "revised nominal
amount". The deductible amount is calculated from this revised
nominal amount by applying a percentage from a table. From this table
only a single percentage need be applied. This percentage is
determined by the interval that contains the revised nominal amount.
The table is sorted on maximum amount in ascending order.
- The program is to return the deductible amount; all other fields
should remain unchanged.
The program is to produce a report line, which will be printed by
the invoking program. The program is to end with one of the following
return codes:
- 00 - deductible amount is more than zero
- 04 - deductible amount is zero
- 08 - deductible amount cannot be calculated because either:
a) input is not valid packed decimal or
b) no applicable table entry was found
- 12 - other internal errors
Requirements for the report line:
- Lay-out for the nominal amount: add thousand separators and a
decimal point (or comma), suppress leading zeros, there should be at
least one digit before the decimal point/comma. Negative amounts
should be preceded by a minus sign. Minus sign and amount should be
separated by a single space.
- Lay-out for deductible amount: add thousand separators and a
decimal point (or comma), suppress leading zeros, there should be at
least one digit before the decimal point/comma. If the amount is in
whole Euros/Dollars/whatever, then the decimal portion should be
displayed as two dashes, for examples 12.-- for twelve dollars. In
case the deductible amount is zero, it should be displayed as
"Nihil".
- Remarks field: intended for error messages; always starts with
five spaces. The program need not try to issue multiple error
messages on any single invocation.
On invocation the program receives in R1 a pointer to the following
parameter list:
PARM1 DC A(PARMAREA) * Pointer to parameter area
PARM2 DC A(PRTLINE) * Pointer to buffer for print line
Lay-out of parameter area:
NOMINAL DC PL6 * Nominal amount for deductible item
RESULT DC PL6 * Calculated deductible amount
GROSS DC PL6 * Gross income
MINPERC DC PL2 * Percentage lower threshold
MINAMT DC PL6 * Minimum amount for lower threshold
MAXPERC DC PL2 * Percentage upper threshold
MAXAMT DC PL6 * Maximum amount for upper threshold
TABSIZE DC H * Nr of entries in the table
TABLEN DC H * Length of each table entry
TABPTR DC AL4 * Pointer to the table
The table entries have the following lay-out:
LIMIT DC PL6 * Upper limit for this percentage
PERC DC PL2 * Applicable percentage
DC CL0 * Filler to next entry
The print line has the following lay-out:
PRTNOMNL DC CL20 * Nominal amount
PRTRESLT DC CL20 * Deductible amount
PRTREM DC CL40 * Remarks field
Please write a macro DEFREGS which is to define names for registers.
This macro is to accept a maximum of four parameters:
- Positional parm: starting number for series of registers
- Positional parm: ending number for series of registers
- Positional parm: counting method - dec or hex, default dec
- Keyword parm: prefix, default is R
The parameters should be processed according to the following
criteria:
- Starting and ending numbers to be processed consistently with
their use in STM instructions
- Counting method dec numbers registers decimally 0, 1, ... 14, 15
- Counting method hex numbers registers hexadecimally 0, 1, ... E, F
- Valid prefixes: R, GPR, CR, AR, or FPR
- Superfluous parameters should be reported on an error message
You have completed the assembler proficiency self-test. You had six
hours for this test. Did you complete all assignments within time?
If you want to, we can score your results. To have them scored
please contact Abe Kornelis.
Please note: scoring your results takes time and is not free of
charge.
This site is a member of WebRing.
You are invited to browse the
list of mainframe-loving sites.
|
|
Dinos are not dead. They are alive and well and living in data
centers all
around you. They speak in tongues and work strange magics with
computers.
Beware the dino! And just in case you're waiting for the final
demise of
these dino's: remember that dinos ruled the world for 155-million
years!
|
Dinos and other anachronisms
[
Join Now
|
Ring Hub
| Random
|
<< Prev
|
Next >>
]
|
To the Introduction.
To Assignment 1: Theory.
To Assignment 2: Check Parameter.
To Assignment 3: Tax-deductible Item.
To Assignment 4: Build Macro.
To the Completion.
To the English Homepage.
To the general Homepage.
Below you find the logo of our
sponsor
and logos of the web-standards that this page adheres to.