FldType.ibeblock

 execute ibeblock (
    FType integer,
    FSubType integer,
    FLen integer,
    FScale integer, 
    FSegmentSize integer,
    FCharLen integer,
    FPrecision integer,
    SQLDialect integer = 3)
 returns (TypeAsString varchar(200))
 as
 begin
    TypeAsString = '';
    if ((FCharLen = 0) or (FCharLen is NULL)) then
       FCharLen = FLen;

    if (FType = 261) then
       TypeAsString = ibec_Concat('BLOB SUB_TYPE ', FSubType, ' SEGMENT SIZE ', FSegmentSize);
    else if (FType = 14) then
       TypeAsString = 'CHAR(' || FCharLen || ')';
    else if (FType = 37) then
       TypeAsString = 'VARCHAR(' || FCharLen || ')';
    else if (FType = 12) then
       TypeAsString = 'DATE';
    else if (FType = 13) then
       TypeAsString = 'TIME';
    else if (FType = 35) then
    begin
       if (SQLDialect = 3) then
          TypeAsString = 'TIMESTAMP';
       else
          TypeAsString = 'DATE';
    end
    else if (FType = 7) then
    begin
       if ((FScale < 0) or (FSubType = 1) or (FSubType = 2)) then
       begin
          if (FSubType = 2) then
             TypeAsString = 'DECIMAL';
          else
             TypeAsString = 'NUMERIC';
          if (FPrecision > 0) then
             TypeAsString = TypeAsString || '(' || FPrecision || ',' || (FScale * -1) || ')';
          else
             TypeAsString = TypeAsString || '(4,' || (FScale * -1) || ')';
       end
       else
          TypeAsString = 'SMALLINT';
    end
    else if (FType = 8) then
    begin
       if ((FScale < 0) or (FSubType = 1) or (FSubType = 2)) then
       begin
          if (FSubType = 2) then
             TypeAsString = 'DECIMAL';
          else
             TypeAsString = 'NUMERIC';
          if (FPrecision > 0) then
             TypeAsString = TypeAsString || '(' || FPrecision || ',' || (FScale * -1) || ')';
          else
             TypeAsString = TypeAsString || '(9,' || (FScale * -1) || ')';
       end
       else
          TypeAsString = 'INTEGER';
    end
    else if (FType = 27) then
    begin
       if ((FScale < 0) or (FSubType = 1) or (FSubType = 2)) then
       begin
          if (FSubType = 2) then
             TypeAsString = 'DECIMAL';
          else
             TypeAsString = 'NUMERIC';
          if (FPrecision > 0) then
             TypeAsString = TypeAsString || '(' || FPrecision || ',' || (FScale * -1) || ')';
          else
             TypeAsString = TypeAsString || '(9,' || (FScale * -1) || ')';
       end
       else
          TypeAsString = 'DOUBLE PRECISION';
    end
    else if (FType = 16) then
    begin
       if ((FScale < 0) or (FSubType = 1) or (FSubType = 2)) then
       begin
          if (FSubType = 2) then
             TypeAsString = 'DECIMAL';
          else
             TypeAsString = 'NUMERIC';
          if (FPrecision > 0) then
             TypeAsString = TypeAsString || '(' || FPrecision || ',' || (FScale * -1) || ')';
          else
             TypeAsString = TypeAsString || '(18,' || (FScale * -1) || ')';
       end
       else
          TypeAsString = 'BIGINT';
    end
    else if (FType = 10) then
       TypeAsString = 'FLOAT';
    suspend;
 end

back to top of page
<< DomExtract.ibeblock | IBEBlock | GensExtract.ibeblock >>