DEFINE VARIABLE c AS INTEGER INIT 0.
FUNCTION func0 RETURNS CHAR ():
   c = c + 1.
   
   IF c EQ 1 THEN DO:
       MESSAGE "f0: 1250" c.
       RETURN      "1250".
   END. ELSE IF c EQ 2 THEN DO:
       MESSAGE "f0: iso8859-15" c.
       RETURN      "iso8859-15".
   END. ELSE IF c EQ 3 THEN DO:
       MESSAGE "f0: utf-16" c.
       RETURN      "utf-16".
   END. ELSE IF c EQ 4 THEN DO:
       MESSAGE "f0: roman-8" c.
       RETURN      "roman-8".
   END. ELSE IF c EQ 5 THEN DO:
       MESSAGE "f0: big-5" c.
       RETURN      "big-5".
   END. ELSE IF c EQ 4 THEN DO:
       MESSAGE "f0: gb18030" c.
       RETURN      "gb18030".
   END.
   
   MESSAGE "f0: ibm850" c.
   RETURN      "ibm850".
END.

FUNCTION printCPs RETURNS CHAR (INPUT buf AS HANDLE ):
   DEFINE VARIABLE ret AS CHAR.
   DEFINE VARIABLE cp AS CHAR.
   DEFINE VARIABLE i AS INT.

   buf:BUFFER-CREATE().
   ret = buf:NAME + ":". 
   
   DO WHILE TRUE:
      DEFINE VARIABLE fbh AS HANDLE.
      
      i = i + 1.
      fbh = buf:BUFFER-FIELD(i) NO-ERROR.
      IF fbh EQ ? THEN
         LEAVE.

      cp = GET-CODEPAGE(fbh:BUFFER-VALUE()) NO-ERROR.
      ret = ret + " " + (IF cp EQ ? THEN '?' ELSE cp).  
   END.
      
   MESSAGE ret.
END.

IF YES THEN RETURN ERROR.
MESSAGE "IF YES THEN RETURN ERROR.".

DEFINE NEW SHARED TEMP-TABLE tt01 NO-UNDO
   FIELD f01_0 AS   CHAR
   FIELD f01_1 AS   CLOB
   FIELD f01_2 AS   CLOB TTCODEPAGE
   FIELD f01_3 AS   CLOB COLUMN-CODEPAGE "utf-8"
   FIELD f01_4 LIKE book.clob-1250RO
   FIELD f01_5 LIKE book.clob-utf8basic
   FIELD f01_6 AS   CLOB COLUMN-CODEPAGE func0().
.
printCPs(BUFFER tt01:HANDLE).

DEFINE NEW SHARED TEMP-TABLE tt02 NO-UNDO
   FIELD f02_0  AS   CHAR
   FIELD f02_1  AS   CLOB
   FIELD f02_2  AS   CLOB TTCODEPAGE
   FIELD f02_3  AS   CLOB COLUMN-CODEPAGE "utf-8"
   FIELD f02_4  LIKE book.clob-1250RO
   FIELD f02_5  LIKE book.clob-utf8basic
   FIELD f02_6  LIKE tt01.f01_1
   FIELD f02_7  LIKE tt01.f01_2
   FIELD f02_8  LIKE tt01.f01_3
   FIELD f02_9  LIKE tt01.f01_4
   FIELD f02_10 LIKE tt01.f01_5
   FIELD f02_11 LIKE tt01.f01_6
.
printCPs(BUFFER tt02:HANDLE).

DEFINE NEW SHARED TEMP-TABLE tt03 LIKE tt02.
printCPs(BUFFER tt03:HANDLE).

DEFINE NEW SHARED TEMP-TABLE tt04 NO-UNDO
   FIELD f04_0  AS   CHAR
   FIELD f04_1  AS   CLOB
   FIELD f04_2  AS   CLOB TTCODEPAGE
   FIELD f04_3  AS   CLOB COLUMN-CODEPAGE "utf-8"
   FIELD f04_4  LIKE book.clob-1250RO
   FIELD f04_5  LIKE book.clob-utf8basic
   FIELD f04_6  LIKE tt02.f02_1
   FIELD f04_7  LIKE tt02.f02_2
   FIELD f04_8  LIKE tt02.f02_3
   FIELD f04_9  LIKE tt02.f02_4
   FIELD f04_10 LIKE tt02.f02_5
   FIELD f04_11 LIKE tt02.f02_11
   FIELD f04_12 LIKE tt01.f01_6
.
printCPs(BUFFER tt04:HANDLE).


DEFINE VARIABLE dtbh AS HANDLE.
DEFINE VARIABLE dbh AS HANDLE.
DEFINE VARIABLE dfbh1 AS HANDLE.
CREATE TEMP-TABLE dtbh.
MESSAGE dtbh:ADD-LIKE-FIELD("f1",  "tt02.f02_1")
        dtbh:ADD-LIKE-FIELD("f2",  "tt02.f02_2")
        dtbh:ADD-LIKE-FIELD("f3",  "tt02.f02_3")
        dtbh:ADD-LIKE-FIELD("f4",  "tt02.f02_4")
        dtbh:ADD-LIKE-FIELD("f5",  "tt02.f02_5")
        dtbh:ADD-LIKE-FIELD("f6",  "tt02.f02_6")
        dtbh:ADD-LIKE-FIELD("f7",  "tt02.f02_7")
        dtbh:ADD-LIKE-FIELD("f8",  "tt02.f02_8")
        dtbh:ADD-LIKE-FIELD("f9",  "tt02.f02_9")
        dtbh:ADD-LIKE-FIELD("f10", "tt02.f02_10")
        dtbh:ADD-LIKE-FIELD("f11", "tt02.f02_11")
        dtbh:ADD-LIKE-FIELD("f12", "book.clob-1250RO")
        dtbh:ADD-LIKE-FIELD("f13", "book.clob-utf8basic")
        dtbh:ADD-LIKE-FIELD("f14", "tt02.dfsdfsdf")     // Could not find source field dfsdfsdf during ADD-LIKE-FIELD. (9055)
        dtbh:ADD-LIKE-FIELD("f15", "book.dfsdfsdf")     // Could not find source field dfsdfsdf during ADD-LIKE-FIELD. (9055)
        dtbh:ADD-LIKE-FIELD("f16", "dfsdfsdf.dfsdfsdf") // Could not find table dfsdfsdf during ADD-LIKE-FIELD.  Table names must not be abbreviated. (9054)
        dtbh:TEMP-TABLE-PREPARE("dtt1")
     . // yes yes yes yes yes yes yes yes yes yes yes yes yes no no no yes

dbh = dtbh:DEFAULT-BUFFER-HANDLE.
dbh:BUFFER-CREATE().
printCPs(dbh).


CREATE TEMP-TABLE dtbh.
dtbh:CREATE-LIKE("tt02").
dtbh:TEMP-TABLE-PREPARE("dtt2").
dbh = dtbh:DEFAULT-BUFFER-HANDLE.
dbh:BUFFER-CREATE().
printCPs(dbh).


run ask-2.p.

