Quantcast
Channel: Teradata Forums - Tools
Viewing all articles
Browse latest Browse all 4252

z/OS Mainframe TPT RECFM=FB versus LRECL=VB - response (9) by rsilvers

$
0
0

Yes the LRECL=375. If I change the LRECL to 375 I get error message
FILE_WRITER: TPT19438 pmOpen failed. LRECL does not match length defined by data schema (38)
 So that tells me TPT needs the extra 8 bytes for the indicatormode and it is padding at end of record when INDICATORMODE='N'
 INDICATOR BYTES NEEDED: 8  
 EXPECTED RECORD LENGTH: 383
 To prove this I took one of the examples from the TERADATA samplib (GT95) and ran some different tests with RECFM=FB and RECFM=VB ....RECFM=VB doesn't pad the indicator byte with INDICATORMODE='N' but you still have to add 1 to record length for the indicator byte and add 4 to record length for RECFM=VB, see results below
 
/**************************************************************/
 /*                                                            */
 /* Copyright 2007-2009, Teradata Corporation.                 */
 /* All Rights Reserved.                                       */
 /*                                                            */
 /* Script Name: GT95.txt                                      */
 /**************************************************************/
 DEFINE JOB UPSERT_EMPLOYEE_TABLE_FROM_FILE
 DESCRIPTION 'UPSERT SAMPLE EMPLOYEE TABLE FROM A FILE'
 (
    DEFINE SCHEMA EMPLOYEE_SCHEMA
    DESCRIPTION 'SAMPLE EMPLOYEE SCHEMA'
    (
       EMP_ID    CHAR(5),
       EMP_NAME  CHAR(10),
       DEPT_NAME CHAR(10)
    );
 
    DEFINE OPERATOR DDL_OPERATOR()
    DESCRIPTION 'TERADATA PARALLEL TRANSPORTER DDL OPERATOR'
    TYPE DDL
    ATTRIBUTES
    (
       VARCHAR PrivateLogName = 'GT95_ddloper_log',
       VARCHAR TdpId          = @MyTdpId,
       VARCHAR UserName       = @MyUserName,
       VARCHAR AccountID,
       VARCHAR ErrorList      = '3807'
    );
 
    DEFINE OPERATOR FILE_WRITER()
    DESCRIPTION 'TERADATA PARALLEL TRANSPORTER DATA CONNECTOR OPERATOR'
    TYPE DATACONNECTOR CONSUMER
    SCHEMA EMPLOYEE_SCHEMA
    ATTRIBUTES
    (
       VARCHAR PrivateLogName    = 'GT95_dataconnoper_writer_privatelog',
       VARCHAR FileName          = @GT95_FileName,
       VARCHAR INDICATORMODE     = 'N',
       VARCHAR OpenMode          = 'Write',
       VARCHAR FORMAT            = 'UNFORMATTED'
    );
 
    DEFINE OPERATOR EXPORT_OPERATOR()
    DESCRIPTION 'TERADATA PARALLEL TRANSPORTER EXPORT OPERATOR'
    TYPE EXPORT
    SCHEMA EMPLOYEE_SCHEMA
    ATTRIBUTES
    (
       VARCHAR PrivateLogName    = 'GT95_exportoper_privatelog',
       INTEGER MaxSessions       =  32,
       INTEGER MinSessions       =  1,
       VARCHAR TdpId             = @MyTdpId,
       VARCHAR UserName          = @MyUserName,
       VARCHAR AccountId,
       VARCHAR SelectStmt        = 'SELECT * FROM TEMP_EMP_TABLE;'
    );
 
    STEP setup_tables
    (
       APPLY
       ('DROP TABLE TEMP_EMP_TABLE;'),
       ('DROP TABLE GT95_STREAMOPER_ERRTABLE;'),
       ('DROP TABLE GT95_STREAMOPER_LOGTABLE;'),
       ('CREATE TABLE TEMP_EMP_TABLE(EMP_ID CHAR(5), EMP_NAME CHAR(10),
                                     DEPT_NAME CHAR(10));'),
       ('INSERT INTO TEMP_EMP_TABLE(''119'',''RALPH'',''LAW'');'),
       ('INSERT INTO TEMP_EMP_TABLE(''114'',''ZACH'',''SERVICE'');'),
       ('INSERT INTO TEMP_EMP_TABLE(''105'',''ELLEN'',''PARTS'');'),
       ('INSERT INTO TEMP_EMP_TABLE(''110'',''ALICE'',''LAW'');'),
       ('INSERT INTO TEMP_EMP_TABLE(''115'',''GEORGE'',''SERVICE'');'),
       ('INSERT INTO TEMP_EMP_TABLE(''121'',''HENRY'',''PARTS'');'),
       ('INSERT INTO TEMP_EMP_TABLE(''122'',''RAY'',''FINANCE'');'),
       ('INSERT INTO TEMP_EMP_TABLE(''123'',''LAURA'',''PARTS'');'),
       ('INSERT INTO TEMP_EMP_TABLE(''124'',''SHEILA'',''SERVICE'');'),
       ('INSERT INTO TEMP_EMP_TABLE(''125'',''IVAN'',''PARTS'');')
       TO OPERATOR (DDL_OPERATOR () );
    );
 
    STEP setup_export_to_file
    (
       APPLY TO OPERATOR (FILE_WRITER() Ý1¨ )
       SELECT * FROM OPERATOR (EXPORT_OPERATOR() Ý1¨ );
    );
 
 );
 
With INDICATORMODE='Y' RECFM=FB LRECL=26, puts indicator byte at beginning of record 
===================================================================    
 Column Name                    Offset Length Type                      
 ============================== ====== ====== ========================  
 EMP_ID                              0      5 CHAR                      
 EMP_NAME                            5     10 CHAR                      
 DEPT_NAME                          15     10 CHAR                      
 ============================== ====== ====== ========================  
 INDICATOR BYTES NEEDED: 1                                              
 EXPECTED RECORD LENGTH: 26                                             
                                                                        
 .123  LAURA     PARTS
 .124  SHEILA    SERVICE
 .121  HENRY     PARTS
 .125  IVAN      PARTS
 .110  ALICE     LAW  
 .115  GEORGE    SERVICE
 .114  ZACH      SERVICE
 .119  RALPH     LAW  
 .122  RAY       FINANCE
 .105  ELLEN     PARTS
With INDICATORMODE='N' RECFM=FB LRECL=26, puts indicator byte at end of record
======================================================
 Column Name                    Offset Length Type   
 ============================== ====== ====== =========
 EMP_ID                              0      5 CHAR   
 EMP_NAME                            5     10 CHAR   
 DEPT_NAME                          15     10 CHAR   
 ============================== ====== ====== =========
 INDICATOR BYTES NEEDED: 1                           
 EXPECTED RECORD LENGTH: 26                          
 105  ELLEN     PARTS     .
 114  ZACH      SERVICE   .
 115  GEORGE    SERVICE   .
 124  SHEILA    SERVICE   .
 110  ALICE     LAW       .
 121  HENRY     PARTS     .
 125  IVAN      PARTS     .
 123  LAURA     PARTS     .
 122  RAY       FINANCE   .
 119  RALPH     LAW       .
With INDICATORMODE='N' RECFM=VB LRECL=30 (extra 4 bytes added for RECFM=VB), no indicator bytes are written/padded
 ======================================================
 Column Name Offset Length Type
 ============================== ====== ====== =========
 EMP_ID 0 5 CHAR
 EMP_NAME 5 10 CHAR
 DEPT_NAME 15 10 CHAR
 ============================== ====== ====== =========
 INDICATOR BYTES NEEDED: 1
 EXPECTED RECORD LENGTH: 26
 124  SHEILA    SERVICE
 115  GEORGE    SERVICE
 121  HENRY     PARTS
 114  ZACH      SERVICE
 122  RAY       FINANCE
 110  ALICE     LAW  
 125  IVAN      PARTS
 123  LAURA     PARTS
 105  ELLEN     PARTS
 119  RALPH     LAW  
With INDICATORMODE='Y' RECFM=VB LRECL=30 (extra 4 bytes added for RECFM=VB), indicator bytes are written at beginning of record
 ======================================================
 Column Name Offset Length Type
 ============================== ====== ====== =========
 EMP_ID 0 5 CHAR
 EMP_NAME 5 10 CHAR
 DEPT_NAME 15 10 CHAR
 ============================== ====== ====== =========
 INDICATOR BYTES NEEDED: 1
 EXPECTED RECORD LENGTH: 26
 .119  RALPH     LAW    
 .114  ZACH      SERVICE
 .115  GEORGE    SERVICE
 .122  RAY       FINANCE
 .110  ALICE     LAW    
 .105  ELLEN     PARTS  
 .124  SHEILA    SERVICE
 .123  LAURA     PARTS  
 .125  IVAN      PARTS  
 .121  HENRY     PARTS  
 
 


Viewing all articles
Browse latest Browse all 4252

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>