IBM Professional Certification Program

Accelerate insight. Improve skills. Get certified now.

Test C6030-041: Programming with IBM Enterprise PL/I

Section 1 - Block and Program Structure (12%)

  1. Identify the difference between procedures and functions (including parameter/argument list, secondary entry, call BYVALUE, call BYREFERENCE, prototype entry declaration, recursive call)

  2. Write code that properly implements procedures and functions

  3. Write code that properly implements BEGIN blocks and DO groups

  4. Identify the scope of variables in a block/program

  5. Identify proper and improper use of function hierarchy and nesting

Section 2 - Language Fundamentals (25%)

  1. Identify valid and invalid assignments

  2. Evaluate assignments for operator of various types

  3. Describe the proper usage of the basic numeric types (e.g. FIXED, FLOAT, DECIMAL, BINARY, PIC)

  4. Describe the proper usage of the basic string types (e.g. BIT, CHAR, WIDECHAR)

  5. Perform arithmetic between variables of different types

  6. Write code that correctly implements builtin functions and pseudo-variables. Representative examples:

    1. Arithmetic functions (MAX, MIN, MOD)

    2. Array-handling functions (DIMENSION, LBOUND, HBOUND)

    3. Buffer-management functions (COMPARE, XMLCHAR)

    4. Condition-handling functions (ONCHAR, ONCODE, ONWCHAR)

    5. Input/Output functions (COUNT, ENDFILE, FILEOPEN)

    6. Miscellaneous functions (HEX, PLIRETV, STRING)

    7. Precision-handling functions (BINARY, DECIMAL, UNSIGNED)

    8. Psedovariables (ONSOURCE, STRING, SUBSTR)

    9. Storage control functions (ADDR, NULL, SYSNULL)

    10. String-handling functions (BIT, CHAR, SUBSTR, TRANSLATE, WIDECHAR)

  7. Identify the proper specification of character and bit constants, both with and without hex

  8. Identify the proper specification of numeric constants including use of underscores

Section 3 - Declarations and Variable Scoping (12%)

  1. Declare variables of various types and assign values

  2. Describe efficient initialization of special types (e.g. BIT, PICTURE)

  3. Evaluate the handling of aggregates (arrays, structures, unions, cell)

Section 4 - Flow Control and Exception / Condition Handling (15%)

  1. Write code using all forms of loop constructs (e.g. labeled, unlabeled, nested, loop control)

  2. State the values taken by loop counter variables during and after loop execution and number of iterations

  3. Identify forms of loops that are implemented incorrectly (e.g. incorrect bounds, infinite loop)

  4. Write code using IF and SELECT statements

  5. Describe the use of ON UNIT and REVERT for proper exception/condition handling (e.g. ONCODE, ONSIZE)

  6. Identify proper use of checkout conditions

  7. Identify implications of using the SIGNAL statement

Section 5 - Pointers, Offsets, Controlled Variables and Areas (12%)

  1. Write code that uses pointers to properly access program memory

  2. Use CONTROLLED variables correctly

  3. Identify proper usage of storage control (e.g. AUTO, STATIC, CONTROLLED, BASED, DEFINED, PARAMETER)

Section 6 - Compiling and Linking PL/I Programs (12%)

  1. Differentiate between static and dynamic linkage conventions

  2. Describe what happens when FETCH and RELEASE statements are used

  3. Identify implications of using the different calling conventions (including BYVALUE vs. BYADDR)

  4. Validate execution of programs with preprocessor statements

  5. Analyze compiler messages to identify errors

Section 7 - Data Access (12%)

  1. Write code that implements GET and PUT to move data from SYSIN and to SYSPRINT

  2. Recognize syntax for basic I/O handling for files (e.g. READ INTO, READ SET, WRITE, LOCATE)

  3. Recognize proper ENDFILE handling

  4. Recognize the separation between logical filename and physical dataset

  5. Identify issues associated with mismatched record lengths between logical and physical definition


Connect with Us