👁 0
Q: What is the difference between COMP and COMP-3 in COBOL?
Answer:
COMP (COMPUTATIONAL) - Pure binary format
- Stored in binary (base-2)
- Used for subscripts and counts
- Efficient for arithmetic operations
- PIC S9(4) COMP = 2 bytes
- PIC S9(9) COMP = 4 bytes
COMP-3 (PACKED DECIMAL)
- Each digit takes 4 bits (nibble)
- Last nibble holds sign
- Used for business calculations
- PIC S9(5) COMP-3 = 3 bytes
- Formula: (n+1)/2 rounded up
When to use:
- COMP - Array subscripts, counters, loops
- COMP-3 - Money, quantities, business data
👁 0
Q: How do I fix S0C7 Data Exception ABEND?
Answer:
S0C7 occurs when the program tries to perform arithmetic on non-numeric data.
Common Causes:
- Uninitialized numeric fields (contains spaces/garbage)
- Moving alphanumeric data to numeric field
- Reading file with wrong record layout
- Array subscript accessing wrong memory
How to Fix:
- Initialize all numeric fields to ZEROS
- Validate input before arithmetic
- Check file layouts match
- Use DISPLAY to debug field contents
* Always initialize
INITIALIZE WS-RECORD.
MOVE ZEROS TO WS-AMOUNT.
* Validate before use
IF WS-INPUT IS NUMERIC
COMPUTE WS-RESULT = WS-INPUT * 2
END-IF.
👁 0
Q: What is the difference between KSDS and ESDS?
Answer:
KSDS (Key Sequenced Data Set):
- Records accessed by unique key
- Records stored in key sequence
- Has both data and index components
- Supports random and sequential access
- Can delete and reinsert records
- Most commonly used VSAM type
ESDS (Entry Sequenced Data Set):
- Records stored in arrival order
- Accessed by RBA (Relative Byte Address)
- No index component
- Cannot delete records (only mark inactive)
- Similar to sequential files
- Good for logs, audit trails
Use KSDS when: You need key-based access, updates, deletes
Use ESDS when: Sequential processing only, append-only data
👁 0
Q: Explain REDEFINES clause with an example.
Answer:
REDEFINES allows the same storage area to be referenced by different data names with different definitions.
Rules:
- Must be at same level as item being redefined
- Cannot redefine item with OCCURS
- Redefined item must appear first
- Lengths should match or redefining should be shorter
01 WS-DATE. 05 WS-DATE-NUM PIC 9(8). 01 WS-DATE-X REDEFINES WS-DATE. 05 WS-YEAR PIC 9(4). 05 WS-MONTH PIC 9(2). 05 WS-DAY PIC 9(2).
Same 8 bytes can be accessed as single number or individual components.
👁 0
Q: How to handle SQLCODE -805?
Answer:
-805 is DBRM or package not found. Plan bound but package missing or invalidated. REBIND PACKAGE. Check collection, package name. Verify BIND completed successfully. May need BIND PLAN to add package.
👁 0
Q: What is the difference between PARM and SYSIN for passing parameters?
Answer:
PARM (EXEC statement):
- Limited to 100 characters
- Passed in memory to program
- Accessed via LINKAGE SECTION
- Good for small, simple parameters
SYSIN (DD statement):
- No practical size limit
- Read as a file by program
- Can contain multiple records
- Good for control cards, complex input
// PARM example //STEP1 EXEC PGM=MYPROG,PARM='PARAM1,PARAM2' // SYSIN example //SYSIN DD * CONTROL OPTION1 DATE=20231215 LIMIT=1000 /*
👁 0
Q: What is the difference between COMP and COMP-3?
Answer:
COMP (Binary) stores data in binary format, taking 2, 4, or 8 bytes. COMP-3 (Packed Decimal) stores two digits per byte with the sign in the last nibble, more efficient for decimal arithmetic. COMP is faster for calculations while COMP-3 saves space for large decimal numbers.
👁 0
Q: What is USAGE clause?
Answer:
USAGE specifies internal data representation. DISPLAY (default)=character, COMP/BINARY=binary, COMP-3/PACKED-DECIMAL=packed, COMP-1=single float, COMP-2=double float. Affects storage size and arithmetic performance.
👁 0
Q: What is MQT?
Answer:
MQT (Materialized Query Table) stores computed results. CREATE TABLE name AS (SELECT...) DATA INITIALLY DEFERRED REFRESH DEFERRED. Improves query performance. REFRESH TABLE updates. Use for aggregations, joins.
👁 0
Q: How to handle packed decimal data?
Answer:
Packed decimal (COMP-3) stores 2 digits per byte, sign in low nibble. PIC S9(5) COMP-3 uses 3 bytes. For I/O, often must convert to display. Use MOVE to display field or NUMVAL function. Handle sign separately if needed.
👁 0
Q: Explain EXTERNAL clause
Answer:
EXTERNAL allows data sharing between separately compiled programs. 01 WS-SHARED PIC X(100) EXTERNAL. All programs with same EXTERNAL name share same storage. Use for global data without passing parameters. Be careful with initialization.
👁 0
Q: How to handle EBCDIC/ASCII conversion?
Answer:
COBOL on mainframe uses EBCDIC natively. For ASCII conversion: use INSPECT CONVERTING, or file translation (JCL), or LE functions. NATIONAL-OF and DISPLAY-OF for Unicode. Different collating sequences affect SORT and comparisons.
👁 0
Q: Explain EXEC SQL statements
Answer:
EXEC SQL marks embedded DB2 SQL. EXEC SQL SELECT col INTO :host-var FROM table WHERE key = :key-var END-EXEC. Colon prefix for host variables. SQLCODE in SQLCA indicates result. Precompiler converts to COBOL calls.
👁 0
Q: How to delete VSAM cluster?
Answer:
IDCAMS DELETE ds.name CLUSTER. Or DELETE ds.name FILE(ddname) if DD provided. PURGE overrides retention. ERASE clears data. DELETE removes catalog entry and data/index components.
👁 0
Q: What is KSDS key format?
Answer:
Keys defined by KEYS(length offset). Offset is 0-based. Key extracted from record at offset for length bytes. Alphanumeric comparison. Numeric keys need proper format. Key must be contiguous.
👁 0
Q: Explain DEBUGGING declarative
Answer:
USE FOR DEBUGGING enables debug procedures. Requires WITH DEBUGGING MODE. Triggers on: ALTER, PERFORM, GO TO, or reference to debug item. Displays data values and flow. Object code excluded unless compiled with DEBUG option.
👁 0
Q: What is OBJECT-COMPUTER paragraph?
Answer:
OBJECT-COMPUTER describes execution machine. OBJECT-COMPUTER. IBM-3090. MEMORY SIZE clause deprecated. PROGRAM COLLATING SEQUENCE for sort order. SEGMENT-LIMIT for overlay. Mostly documentation now; compiler usually ignores.
👁 0
Q: What is READY TRACE?
Answer:
READY TRACE turns on paragraph tracing. Shows paragraph names as executed. RESET TRACE turns off. Must compile with debugging option. Output goes to SYSOUT. Replaced by better debuggers but useful for quick flow analysis.
👁 0
Q: What is CISIZE calculation?
Answer:
CISIZE must hold at least one record plus overhead. Formula complex. Let system default usually best. Common sizes: 4096, 8192, 16384. Larger CI can improve sequential, hurt random.
👁 0
Q: What is LOCAL-STORAGE SECTION?
Answer:
LOCAL-STORAGE SECTION is reinitialized each invocation. Unlike WORKING-STORAGE which retains values. Each thread gets own copy. Useful for recursive programs and threaded environments. COBOL-85+ feature. Not all compilers support equally.
👁 0
Q: How to handle binary data?
Answer:
COMP/BINARY stores binary. PIC S9(4) COMP is halfword (2 bytes). PIC S9(9) COMP is fullword (4 bytes). PIC S9(18) COMP is doubleword (8 bytes). SYNC aligns for performance. Value range limited by bytes, not picture.
👁 0
Q: How to use FUNCTION CURRENT-DATE?
Answer:
FUNCTION CURRENT-DATE returns 21-char timestamp. Format: YYYYMMDDHHMMSSDHHMM (D=hundredths, HH=GMT offset). MOVE FUNCTION CURRENT-DATE TO WS-TIMESTAMP. Parse components with reference modification or REDEFINES.
👁 0
Q: How to compress VSAM?
Answer:
DFSMS compression via DATACLAS. Or EXTENDED FORMAT with compression. Not native VSAM feature. Reduces space, adds CPU overhead. Good for large, read-heavy files.
👁 0
Q: What is the difference between COND and IF/THEN/ELSE?
Answer:
COND tests return codes to skip steps (negative logic - skips IF true). IF/THEN/ELSE tests conditions to execute steps (positive logic). IF supports complex expressions, COND is simpler but confusing. IF preferred for readability. COND on JOB affects all steps; on EXEC affects that step.
👁 0
Q: Explain NOTIFY parameter
Answer:
NOTIFY=userid sends message when job completes. On JOB card. Multiple userids: NOTIFY=(USER1,USER2). Notifies success or failure. TSO users get message at terminal. Essential for batch monitoring. Commonly NOTIFY=&SYSUID for submitter.
👁 0
Q: Explain EIBRESP values
Answer:
EIBRESP holds response code. 0=NORMAL. Non-zero indicates condition. Use DFHRESP(condition) for comparison. Common: DFHRESP(NOTFND), DFHRESP(DUPKEY), DFHRESP(INVREQ). Check documentation.
👁 0
Q: How to check EIBAID?
Answer:
EIBAID shows attention key pressed. Compare with DFHENTER, DFHPF1-24, DFHCLEAR, DFHPA1-3. Example: IF EIBAID = DFHPF3 do-exit. Determines user action on screen.
👁 0
Q: How to use ACCUM option?
Answer:
ACCUM accumulates map output. EXEC CICS SEND MAP ACCUM. Build complete screen before send. Final EXEC CICS SEND PAGE. For multi-map screens. Message building.
👁 0
Q: What is indicator variable?
Answer:
Indicator variable detects NULL values. Declare: 01 col-var. 01 col-ind PIC S9(4) COMP. Use: INTO :col-var:col-ind. If col-ind < 0, value is NULL. Set indicator negative to insert NULL. Required for nullable columns.
👁 0
Q: What is CURRENT DATE function?
Answer:
CURRENT DATE returns today's date. CURRENT TIME for time. CURRENT TIMESTAMP for both. No parentheses needed. Used in SELECT, WHERE, INSERT. Can compare: WHERE hire_date > CURRENT DATE - 30 DAYS.
👁 0
Q: Explain RANK vs DENSE_RANK
Answer:
RANK() creates gaps for ties: 1,2,2,4. DENSE_RANK() no gaps: 1,2,2,3. ROW_NUMBER() no ties: 1,2,3,4. RANK useful for competition ranking. DENSE_RANK for level assignment. Choose based on need.
👁 0
Q: What is data sharing?
Answer:
Data sharing allows multiple DB2s to access same data. Group of subsystems share data. Uses Coupling Facility for coordination. Provides availability, scalability. Complex but powerful for high availability.
👁 0
Q: What is the purpose of COPY statement?
Answer:
COPY includes copybook members at compile time, promoting code reuse and standardization. Syntax: COPY copybook-name. REPLACING clause allows field substitution. Copybooks typically contain record layouts, working-storage definitions, and common routines.
👁 0
Q: What is table compression?
Answer:
Compression reduces storage. Huffman encoding in dictionary. CREATE TABLE ... COMPRESS YES. REORG to compress existing. CPU trade-off for I/O savings. Good for read-heavy, large tables.
👁 0
Q: What is REBIND and when needed?
Answer:
REBIND updates access path without precompile. REBIND PACKAGE after RUNSTATS, index changes. REBIND PLAN for plan-level changes. Can improve or degrade performance - test first. EXPLAIN before/after.
👁 0
Q: Explain host variable rules
Answer:
Host variables prefixed with : in SQL. Declare in WORKING-STORAGE. Must be compatible types. Use indicator for NULL. Cannot use in dynamic object names. VARCHAR needs two-part structure in COBOL.
👁 0
Q: Explain COMPUTE statement
Answer:
COMPUTE performs arithmetic with expression syntax. COMPUTE RESULT = (A + B) * C / D. Supports + - * / ** operators. ROUNDED option rounds result. ON SIZE ERROR handles overflow. Clearer than separate ADD/SUBTRACT/MULTIPLY/DIVIDE for complex formulas.
👁 0
Q: How to use intrinsic functions?
Answer:
COBOL-85 intrinsic functions: FUNCTION LENGTH(field), FUNCTION CURRENT-DATE, FUNCTION UPPER-CASE(field), FUNCTION NUMVAL(field), FUNCTION MOD(a,b), FUNCTION INTEGER-OF-DATE(date). Use in expressions or with COMPUTE. Return values only, no side effects.
👁 0
Q: What is SYNCHRONIZED clause?
Answer:
SYNCHRONIZED aligns binary items on natural boundaries for efficient access. 01 WS-GROUP. 05 WS-CHAR PIC X. 05 WS-BINARY PIC S9(8) COMP SYNC. Adds slack bytes as needed. Can waste space but improves performance. RIGHT/LEFT options available.
👁 0
Q: What is NATIVE-BCD?
Answer:
NATIVE-BCD is native binary-coded decimal, digits stored one per byte. Less efficient than COMP-3 but simpler to inspect in dumps. Some shops prefer for debugging. Available through compiler options or USAGE clause variations.
👁 0
Q: How to define table with KEY?
Answer:
For binary search, tables need KEY: 05 WS-TABLE OCCURS 100 ASCENDING KEY WS-CODE INDEXED BY WS-IDX. 10 WS-CODE PIC X(5). 10 WS-DESC PIC X(20). SEARCH ALL requires sorted data per KEY. Multiple keys for complex sorts.
👁 0
Q: What is ON SIZE ERROR?
Answer:
ON SIZE ERROR traps arithmetic overflow. COMPUTE X = A + B ON SIZE ERROR PERFORM error-handler END-COMPUTE. Also NOT ON SIZE ERROR for success. Must be enabled (TRUNC option). Prevents abends from overflow conditions.
👁 0
Q: What is REPLACE statement?
Answer:
REPLACE substitutes text during compilation. REPLACE ==OLD-TEXT== BY ==NEW-TEXT==. Active until REPLACE OFF or next REPLACE. Useful with copybooks for site-specific modifications. Different from COPY REPLACING-more global.
👁 0
Q: What is LABEL RECORDS clause?
Answer:
LABEL RECORDS specifies header/trailer labels. STANDARD (default) for labeled tapes. OMITTED for unlabeled or disk. Now less relevant-mostly tapes. Compiler may accept but ignore for disk files. Required in some older programs.
👁 0
Q: Explain SPEED vs RECOVERY
Answer:
SPEED skips CI/CA recovery info during load. Faster but risky. RECOVERY (default) writes recovery info. If job abends, RECOVERY allows restart. SPEED needs complete reload if problem.
👁 0
Q: How to handle negative numbers?
Answer:
Sign stored in PIC S9. SIGN IS LEADING/TRAILING SEPARATE CHARACTER for explicit sign byte. COMP-3 sign in low nibble. Display: S9(5)- shows trailing minus. +9(5) shows sign always. DB/CR for accounting format.
👁 0
Q: What is TITLE statement?
Answer:
TITLE 'Page Header' sets listing page headers. Appears on each page of compilation listing. Useful for documentation. Multiple TITLES change as encountered. After IDENTIFICATION DIVISION start. Compiler directive, not executable.
👁 0
Q: Explain IDENTIFICATION DIVISION
Answer:
IDENTIFICATION DIVISION identifies program. PROGRAM-ID required (up to 8 chars for compatibility). AUTHOR, DATE-WRITTEN, DATE-COMPILED, REMARKS are documentation. INSTALLATION for deployment info. Only PROGRAM-ID affects compilation.
👁 0
Q: What is COLLATING SEQUENCE?
Answer:
PROGRAM COLLATING SEQUENCE IS sequence-name. Affects comparisons and SORT order. Define custom alphabet in SPECIAL-NAMES. Standard is NATIVE (EBCDIC). ASCII for ASCII order. STANDARD-1 for ASCII collating.
👁 0
Q: Explain ALPHABET clause
Answer:
ALPHABET defines custom collating sequence. ALPHABET MY-SEQ IS 'A' THRU 'Z' 'a' THRU 'z'. Or ALPHABET ASCII IS STANDARD-1. Use with COLLATING SEQUENCE. Affects string comparisons and SORT. Define in SPECIAL-NAMES.
👁 0
Q: Explain FUNCTION LENGTH
Answer:
FUNCTION LENGTH returns byte count. FUNCTION LENGTH(field-name). For group items, includes all subordinates. For variable OCCURS, actual current length. Use in COMPUTE, MOVE, comparisons. Often used with STRING pointer initialization.
👁 0
Q: What is RETURN-CODE register?
Answer:
RETURN-CODE sets program completion status. MOVE 0 TO RETURN-CODE (success). MOVE 8 TO RETURN-CODE (warning). Passed to caller/JCL. Check RETURN-CODE after CALL. LE uses CEE3STS for detailed status.
👁 0
Q: What is TYPRUN parameter?
Answer:
TYPRUN options: SCAN (syntax check, no execution), HOLD (submit but hold), COPY (copy JCL to SYSOUT), JCLHOLD (hold with JCL). TYPRUN=SCAN validates JCL without running. Useful for testing complex JCL before production.
👁 0
Q: What is MSGLEVEL parameter?
Answer:
MSGLEVEL=(statements,messages). Statements: 0=JOB only, 1=all JCL, 2=input JCL. Messages: 0=completion only, 1=all including allocation. MSGLEVEL=(1,1) shows everything. MSGLEVEL=(0,0) minimal output. Affects JESMSGLG.
👁 0
Q: How to define ESDS?
Answer:
DEFINE CLUSTER(NAME(ds.name) NONINDEXED RECORDSIZE(avg max)) DATA(NAME(ds.data) CYLINDERS(10 2)). NONINDEXED means ESDS. No KEYS or INDEX components. Access by RBA only.
👁 0
Q: How does IEBCOPY work?
Answer:
IEBCOPY copies/merges PDS members. SYSUT1=input PDS, SYSUT2=output PDS. SYSIN: COPY OUTDD=SYSUT2,INDD=SYSUT1 copies all. SELECT MEMBER=name for specific members. REPLACE option overwrites existing. Can compress PDS.
👁 0
Q: What is DFSMS?
Answer:
DFSMS (Data Facility Storage Management Subsystem) automates storage management. Components: SMS, HSM (migration), DFRMM (tape). ACS routines assign classes. Reduces JCL complexity. DATACLAS defines data characteristics.
👁 0
Q: Explain DD SYSOUT statement
Answer:
SYSOUT=class routes output to JES spool. SYSOUT=* uses MSGCLASS from JOB. SYSOUT=A specific class. Additional: COPIES=2, DEST=node.userid, FCB=fcb-name. Held output: HOLD=YES. OUTPUT statement for complex options.
👁 0
Q: What is CNTL statement?
Answer:
CNTL groups control statements. //name CNTL establishes scope. //name ENDCNTL ends it. Used with OUTPUT or other complex statements. Provides modularity. Can be referenced by name from multiple DDs.
👁 0
Q: How to allocate PDSE?
Answer:
DSNTYPE=LIBRARY creates PDSE. Better than PDS: dynamic directory, member-level sharing, no compression needed. Or DATACLAS with PDSE attribute. Cannot convert back to PDS easily. Recommended for new PDSes.
👁 0
Q: What is SPIN parameter?
Answer:
SPIN=UNALLOC releases output immediately on step/job end. SPIN=(UNALLOC,step) at step end. Without SPIN, output held until job completes. Allows viewing long job output early. On DD SYSOUT statement.
👁 0
Q: Explain ASKTIME ABSTIME
Answer:
ABSTIME is packed decimal timestamp. Microseconds since 1/1/1900. ASKTIME returns current. FORMATTIME converts to readable. Use for calculations, comparisons. Full precision timing.
👁 0
Q: How to handle -818 SQLCODE?
Answer:
-818 is timestamp mismatch between plan and DBRM. DBRM precompiled after last BIND. Solutions: REBIND plan/package, ensure DBRM library current, check promotion procedures. Timestamp in DBRM must match bound plan.
👁 0
Q: What is CICS asynchronous processing?
Answer:
RUN TRANSID for async execution. EXEC CICS RUN TRANSID(xx) CHILD. FETCH CHILD waits for completion. Modern async pattern. Alternative to START.
👁 0
Q: What is BIND command?
Answer:
BIND creates plan/package from DBRM. BIND PLAN(name) MEMBER(dbrm). Options: ISOLATION, VALIDATE, EXPLAIN. REBIND updates existing. BIND PACKAGE for packages. Precompile creates DBRM, BIND makes executable.
👁 0
Q: Explain CICS event processing
Answer:
CICS events for complex situations. WAIT EVENT for multiple conditions. Posted externally. WAIT EXTERNAL alternative. Modern: EVENT binding for async.
👁 0
Q: Explain CICS global user exit
Answer:
Global exits intercept system events. XPPT for program load. XFCT for file operations. Customize CICS behavior. Assembled exits. Powerful but complex.
👁 0
Q: What is CICS FEPI?
Answer:
FEPI (Front End Programming Interface) connects to external systems. Terminal emulation. Legacy integration. EXEC CICS FEPI commands. Complex configuration.