Example: Retrieve Period Datatypes in Binary - Teradata Preprocessor2

Teradata® Preprocessor2 for Embedded SQL Programmer Guide

Product
Teradata Preprocessor2
Release Number
17.00
Published
June 2020
Language
English (United States)
Last Update
2020-06-19
dita:mapPath
whb1544831946911.ditamap
dita:ditavalPath
obe1474387269547.ditaval
dita:id
B035-2446
lifecycle
previous
Product Category
Teradata Tools and Utilities
01 CONVERTER.
   02 HALF-VALUE.
      05 BYTE1 PIC X.
      05 BYTE2 PIC X.
   02 BINARY-VALUE REDEFINES HALF-VALUE PIC S9(2) COMP-5.

 * TIMESTAMP AND TIMESTAMP WITH TIMEZONE
  01  TIMESTAMPFULL.
      02  TIMESTAMPX        PIC X(24).
      02  TIMESTAMPY REDEFINES TIMESTAMPX  OCCURS 2 TIMES.
          05 TSSECONDS       PIC S9(9) COMP.
          05 TSYEAR          PIC S9(4) COMP.
          05 TSMONTH         PIC X.
          05 TSDAY           PIC X.
          05 TSHOUR          PIC X.
          05 TSMINUTE        PIC X.
          05 TSTZHOUR        PIC X.
          05 TSTZMINUTE      PIC X.

      01  WORKSECS               PIC S9(2)V9(6).
      01  DISPSECS               PIC Z9.9(6).

	EXEC SQL
		DECLARE CURA CURSOR FOR
		SELECT  PERIODTS FROM TAB01                        	
	END-EXEC.

	EXEC SQL OPEN CURA
	END-EXEC.

	PERFORM FETCH UNTIL SQLCODE NOT = 0.
FETCH.
	EXEC SQL FETCH CURA INTO
		:TIMESTAMP01 :TIMESTAMPIND
	END-EXEC.
    	IF SQLCODE = 0 THEN
              	IF TIMESTAMPIND = -1 THEN
			DISPLAY 'TIMESTAMP IS NULL'
		ELSE
			MOVE TIMESTAMP01 TO TIMESTAMPX
			PERFORM DISPLAY-TIMESTAMP
		END-IF

	ELSE
		DISPLAY SQLCODE
	END-IF.

  DISPLAY-TIMESTAMP.

      MOVE ZERO TO BINARY-VALUE.

      DISPLAY ' '.

      MOVE TSMONTH(1) TO BYTE2.
      DISPLAY 'MONTH ' BINARY-VALUE.

      MOVE TSDAY(1) TO BYTE2.
      DISPLAY 'DAY ' BINARY-VALUE.

      DISPLAY 'YEAR ' TSYEAR(1).

      MOVE TSHOUR(1) TO BYTE2.
      DISPLAY 'HOUR ' BINARY-VALUE.

      MOVE TSMINUTE(1) TO BYTE2.
      DISPLAY 'MINUTE ' BINARY-VALUE.

 * 15.16 SECONDS IS STORED AS 15160000
      COMPUTE WORKSECS = TSSECONDS(1) / 1000000.
      MOVE WORKSECS TO DISPSECS.
      DISPLAY 'SECONDS '  DISPSECS.

      MOVE TSTZHOUR(1) TO BYTE2.
      DISPLAY 'TZ HOUR ' BINARY-VALUE.

      MOVE TSTZMINUTE(1) TO BYTE2.
      DISPLAY 'TZ MINUTE ' BINARY-VALUE.              

The prior program is for big endian systems (for example, on mainframes). For a little endian system, reverse BYTE1 and BYTE2 in 01 Converter:

01 CONVERTER.
	 02 HALF-VALUE.
			 05 BYTE2 PIC X.
			 05 BYTE1 PIC X.
	 02 BINARY-VALUE REDEFINES HALF-VALUE PIC S9(2) COMP-5.