Make connection using ODBC

Issue #5 resolved
Teemu Halmela created an issue

I'd like to make the connection to the database using ODBC. And actually I also want to run this whole thing on linux and windows machines.

We develop our PHP code on developers own machines. They run windows/linux and run the code on their own server. RPG calls happens through xmlservice and ODBC connection.

Currently libtkit400 depends on libdb400 and other ibm stuff. I guess those are not available on linux/windows, so compiling isn't currently happening.

Is there some way this could happen?

Comments (19)

  1. Teemu Halmela reporter

    Another way, more practical, toolkit-base, need only separate 'call' (libdb400 depend) from prepare code (string-2-packed, etc.). Thereby, just use part of toolkit-base needed to create layout on Linux, and, we simply 'remotely' call db2json.db2proc(blob) ... bingo ... instant toolkit on LUW (Linux, Unix, Windows).

    This sounds to me as best idea. The ODBC interface seems to mostly have same function signatures so most of the code should work. I'll see if I can hack something together.

    BTW (hippie json talk) -- You will undoubtedly be all about 'big data' and 'go faster' (historical pattern), so json interface talk may result in pitch forks and long ropes for me (horrible, so on).

    This will be used by developers so I'd say current performance of the json interface is acceptable. It is already a lot faster in certain cases (nested ds) as xmlservice so this should be a big improvement. But of course, more speed is never a bad thing 😉

  2. Teemu Halmela reporter

    So my hacking attempt hasn't been as easy as I had hoped. Code would need some serious refactoring to make things easier. But at least I have learned something about shared libraries and gdb.

    Currently things work to a point where SQLExecute happens. It returns with an error CEE9901 - Application error. MCH3601 unmonitored by DB2PROC at statement 0000000020, instruction X'0000'.
    The layout might be misaligned or something else is crapping out. But I have no idea what should be checked.

    Do you have any idea what could be the problem? Or is there a way to debug the stored procedure if it ever gets that far?

  3. Teemu Halmela reporter

    So I haven't gotten straight Linux odbc connection to work, still something broken...

    I also tried ile-toolkit-json, but as you said php odbc only supports IN parameters. So I can't get return values from it. Its weird that they do not allow specifying INOUT when c odbc interface allows it.

    But if I understood correctly you can compile db2procj with CRTSQLCI and you can include EXEC SQL statements in your C program, which is crazy. But as I tried to recompile with EXEC SQL lines enabled the compilation fails. It doesn't seem to like those host variables.

  4. Teemu Halmela reporter

    version 1.0.8-sg1 enables json remote db2procj (in/out) or db2procjr (result set).

    So I tried to run these. But for some reason, when I try to connect to these it tells me it can't find DB2PROCJR or DB2PROCJ programs. I tried through both odbc and db2. It can find DB2PROC but not the other two.

    I have restored my DB2JSON lib from the libdb400-1.0.8-sg1. I also can see the programs inside the DB2JSON lib. Any ideas what could be wrong?

  5. Former user Account Deleted

    So I tried to run these. But for some reason, when I try to connect to these it tells me it can't find DB2PROCJR or DB2PROCJ programs.

    Perhaps post your ODBC code to compare to this ibm_db2 on my Linx machine that works.

    $stmt = db2_prepare($conn, "call DB2JSON.DB2PROCJR(?)");
    if (!$stmt) die("Bad prepare: ".db2_stmt_errormsg());
    

    Possible you do not have *PUBLIC authority to the stored procedure (DB2PROC, etc.), or library DB2JSON.

    CHGAUT OBJ('/qsys.lib/db2json.lib') USER(*PUBLIC) DTAAUT(*RWX) OBJAUT(*ALL) SUBTREE(*ALL)
    

    I have no idea really.

  6. Former user Account Deleted

    PHP odbc is working from my Linux machine.

    $conn = odbc_connect($database,$user,$password);
    if (!$conn) die("Bad connect: $database,$user");
    $stmt = odbc_prepare($conn, "call DB2JSON.DB2PROCJR(?)");
    if (!$stmt) die("Bad prepare: ".odbc_errormsg());
    $ret=odbc_execute($stmt,array($clob));
    if (!$ret) die("Bad execute: ".odbc_errormsg());
    $clobOut = "";
    while(odbc_fetch_row($stmt)) {
      $clobOut .= odbc_result($stmt,1);
    }
    $clobOut = trim($clobOut);
    var_dump($clobOut);
    

    Output (php 7.1.4 a bit old):

    $ php --version
    PHP 7.1.4 (cli) (built: Apr 14 2017 15:59:17) ( NTS )
    Copyright (c) 1997-2017 The PHP Group
    Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
    [adc@oc7083008330 tests_php]$ php test0003_hello_pgm_odbc.php 
    Input:
    string(118) "{"pgm":[{"name":"HELLO",  "lib":"DB2JSON"},
            {"s":{"name":"char", "type":"128a", "value":"Hi there"}}
           ]}"
    Output:
    string(63) "{"script":[{"pgm":["HELLO","DB2JSON",{"char":"Hello World"}]}]}"
    
  7. Teemu Halmela reporter

    Getting closer. Now that I completely emptied my DB2JSON and restored it, the programs are found.

    But now I get a new error 😦

    $ php phptest.php
    Input:
    string(118) "{"pgm":[{"name":"HELLO",  "lib":"DB2JSON"},
            {"s":{"name":"char", "type":"128a", "value":"Hi there"}}
           ]}"
    Output:
    PHP Warning:  odbc_execute(): SQL error: [IBM][System i Access ODBC Driver][DB2 for i5/OS]CEE9901 - Application error.  MCH1210 unmonitored by DB2PROCJR at statement 0000000158, instruction X'0000'., SQL state S1000 in SQLExecute in phptest.php on line 18
    Bad execute: [IBM][System i Access ODBC Driver][DB2 for i5/OS]CEE9901 - Application error.  MCH1210 unmonitored by DB2PROCJR at statement 0000000158, instruction X'0000'.
    
    $conn = odbc_connect($dsn , $user , $password, SQL_CUR_USE_DRIVER);
    if (!$conn) die("Bad connect: $dsn,$user\n");
    $stmt = odbc_prepare($conn, "call DB2JSON.DB2PROCJR(?)");
    if (!$stmt) die("Bad prepare: ".odbc_errormsg());
    $ret=odbc_execute($stmt, array($blob));
    if (!$ret) die("Bad execute: ".odbc_errormsg()."\n");
    while(odbc_fetch_row($stmt)){
        $result=odbc_result($stmt,1);
        var_dump($result);
    }
    var_dump($blob);
    
  8. Former user Account Deleted

    more debugger ...

    I released 1.0.8-sg3

    I also added individual pgm stop message in qsysopr ("debugpgm":"stop pgm HELLO"). This stop message occurs just before the actual user program call in db2proc(blob). Probably way too late for your current problem (see next db2procj/db2procjr).

    {"pgm":[{"name":"HELLO",  "lib":"DB2JSON", "debugpgm":"stop pgm HELLO"},
            {"s":{"name":"char", "type":"128a", "value":"Hi there"}}
           ]}
    

    However, you may want to stay with db2procj/db2procjr earlier stop ("debug":"json debug db2procjr"). This stops long before any json parsing, etc., much better chance to find something when no idea what went wrong (current problem).

    {"debug":"json debug db2procjr",
      "pgm":[{"name":"HELLO",  "lib":"DB2JSON"},
            {"s":{"name":"char", "type":"128a", "value":"Hi there"}}
           ]}
    
  9. Teemu Halmela reporter

    Thanks for debug help.

    283 and 285 could explain why things won't work.

    Program:   DB2PROCJR      Library:   DB2JSON        Module:   DB2PROCJR
       278        277   pCopy = clob;                                      
       279        278   clobLen = myCopy.intx;                             
       280        279   clobData = clob + 4;                               
       281        280   for i = 1 to clobLen;                              
       282        281     pCopy = clobData + (i - 1);                      
       283        282     if myCopy.bytex = 'ä';                           
       284        283       nest += 1;                                     
       285        284     elseif myCopy.bytex = 'Ã¥';                       
       286        285       nest -= 1;                                     
       287        286       if nest = 0;                                   
       288        287         leave;                                       
       289        288       endif;                                         
       290        289     endif;                                           
       291        290   endfor;                                            
    

    There seems to be some charset mismatch going on (those are always fun). Which charset could make this happen? User, system or user who restored the library, or something else?

  10. Former user Account Deleted

    EBCDIC variant characters (json bracket and brace)

    I released 1.0.8-sg4

    I believe fixes your json problems linux-2-ibm i over php odbc. However, USC2 fix from memory with RPG to cover both db2procj (ILE c) and db2procjr (ILE RPG). Please test/check on your machine to see if I have all ends covered. Thanks.

  11. Teemu Halmela reporter

    CCSID 65535 (probably not your issue, but for completeness)

    Yes it is 65535. It might affect many things so I don't think I should change it.

    I released 1.0.8-sg4

    That seemed not to change anything, sopen_bracket still shows as 'ä'. But if I change ccsid of the user who makes the odbc connection to 37, hello world example works. But tests j0180, j0181, j0184, j0185 fails with segfaults. Those are the tests that have many special characters so those might be the reason.

    // USC2 convert job ccsid          
    // |  !  ¬  \  `  #  ~  [  ]  ^  {  }  ¢  $  @
    // 4f 5a 5f e0 79 7b a1 ba bb b0 c0 d0 4a 5b 7c
    

    These characters seems to be converted according to this table. So 'C0' becomes 'ä'. Our system is set to finnish and somehow the characters are converted based on that.

  12. Former user Account Deleted

    But tests j0180, j0181, j0184, j0185 fails with segfaults.

    Well, we really need to get behind the segfault to understand. Again, my machine ccsid 37 is working fine remote from Linux over odbc. We have no data, and, your machine is the one failing. What do you want to do???

    1) can figure this out on your own (i hope, you sound competent)?

    2) do i need to be on your machine with a debugger (i want system debugger connection, not bloody green screen)?

    motherhood ...

    Aka, NLS sort of 'debug' collaboration is at heart of successful Open Source projects. As you can see, I am fairly open to working on this odbc side project for you. So please keep going, even when NLS gets ugly. You have a goal at end, and, may 'get' exactly what you wanted because you spent your own time helping.

  13. Teemu Halmela reporter

    Sorry, there has been some other things that are needed to be done.

    But I did some quick debugging. It crashes on the odbc_result() line and only when output has 'special' characters in them.

    This version of j0180 crashes.

    j0180_pgm_hamela03-ds-rpg-occurs
    Input:
    string(1435) "{"pgm":[
        {"name":"HAMELA03",  "lib":"DB2JSON"},
        {"s": [
            {"name":"Parm1", "type":"1a", "value":""},
            {"name":"Parm2", "type":"18a", "value":"ä"},
            {"name":"Parm3", "type":"2a", "value":""},
            {"name":"Parm4", "type":"10a", "value":""},
            {"name":"Arr1Count", "type":"3s0", "value":0}
        ]},
        {"ds": [{"name":"Arr1", "dim":10},
            {"s":[
                {"name":"Arr1P1", "type":"7a", "value":""},
                {"name":"Arr1P2", "type":"132a", "value":""},
                {"name":"Arr1P3", "type":"30a", "value":""},
                {"name":"Arr1P4", "type":"1s0", "value":0}
            ]}
        ]},
        {"s": [
            {"name":"Parm5", "type":"1a", "value":""},
            {"name":"Parm6", "type":"4a", "value":""},
            {"name":"Parm7", "type":"18a", "value":""},
            {"name":"Parm8", "type":"100a", "value":""},
            {"name":"Parm9", "type":"3s0", "value":0},
            {"name":"Parm10", "type":"3s0", "value":0}
        ]},
        {"s": {"name":"Arr2Count", "type":"5s0", "value":3}},
        {"ds": [{"name":"Arr2", "dim":10},
            {"s":[
                {"name":"Arr2P1", "type":"1a", "value":""},
                {"name":"Arr2P2", "type":"30a", "value":""},
                {"name":"Arr2P3", "type":"4a", "value":""},
                {"name":"Arr2P4", "type":"18a", "value":""},
                {"name":"Arr2P5", "type":"100a", "value":""}
            ]}
        ]},
        {"s": {"name":"Parm11", "type":"30a", "value":""}}
    ]}
    PHP Warning:  odbc_prepare(): SQL error: [IBM][System i Access ODBC Driver]Extended dynamic support disabled., SQL state 01000 in SQLPrepare in test3000_sql400json_odbc.php on line 33
    string(5) "DONE!"
    Segmentation fault (core dumped)
    

    If I change 'ä' to 'a', it does not crash.

    j0180_pgm_hamela03-ds-rpg-occurs
    Input:
    string(1435) "{"pgm":[
        {"name":"HAMELA03",  "lib":"DB2JSON"},
        {"s": [
            {"name":"Parm1", "type":"1a", "value":""},
            {"name":"Parm2", "type":"18a", "value":"a"},
            {"name":"Parm3", "type":"2a", "value":""},
            {"name":"Parm4", "type":"10a", "value":""},
            {"name":"Arr1Count", "type":"3s0", "value":0}
        ]},
        {"ds": [{"name":"Arr1", "dim":10},
            {"s":[
                {"name":"Arr1P1", "type":"7a", "value":""},
                {"name":"Arr1P2", "type":"132a", "value":""},
                {"name":"Arr1P3", "type":"30a", "value":""},
                {"name":"Arr1P4", "type":"1s0", "value":0}
            ]}
        ]},
        {"s": [
            {"name":"Parm5", "type":"1a", "value":""},
            {"name":"Parm6", "type":"4a", "value":""},
            {"name":"Parm7", "type":"18a", "value":""},
            {"name":"Parm8", "type":"100a", "value":""},
            {"name":"Parm9", "type":"3s0", "value":0},
            {"name":"Parm10", "type":"3s0", "value":0}
        ]},
        {"s": {"name":"Arr2Count", "type":"5s0", "value":3}},
        {"ds": [{"name":"Arr2", "dim":10},
            {"s":[
                {"name":"Arr2P1", "type":"1a", "value":""},
                {"name":"Arr2P2", "type":"30a", "value":""},
                {"name":"Arr2P3", "type":"4a", "value":""},
                {"name":"Arr2P4", "type":"18a", "value":""},
                {"name":"Arr2P5", "type":"100a", "value":""}
            ]}
        ]},
        {"s": {"name":"Parm11", "type":"30a", "value":""}}
    ]}
    PHP Warning:  odbc_prepare(): SQL error: [IBM][System i Access ODBC Driver]Extended dynamic support disabled., SQL state 01000 in SQLPrepare in test3000_sql400json_odbc.php on line 33
    string(5) "DONE!"
    string(1556) "{"script":[{"pgm":["HAMELA03","DB2JSON",{"Parm1":{}},{"Parm2":"a"},{"Parm3":{}},{"Parm4":{}},{"Arr1Count":1},{"Arr1":[[{"Arr1P1":{}},{"Arr1P2":{}},{"Arr1P3":{}},{"Arr
    1P4":0.0}],[{"Arr1P1":{}},{"Arr1P2":{}},{"Arr1P3":{}},{"Arr1P4":0.0}],[{"Arr1P1":{}},{"Arr1P2":{}},{"Arr1P3":{}},{"Arr1P4":0.0}],[{"Arr1P1":{}},{"Arr1P2":{}},{"Arr1P3":{}},{"Arr1P4
    ":0.0}],[{"Arr1P1":{}},{"Arr1P2":{}},{"Arr1P3":{}},{"Arr1P4":0.0}],[{"Arr1P1":{}},{"Arr1P2":{}},{"Arr1P3":{}},{"Arr1P4":0.0}],[{"Arr1P1":{}},{"Arr1P2":{}},{"Arr1P3":{}},{"Arr1P4":0
    .0}],[{"Arr1P1":{}},{"Arr1P2":{}},{"Arr1P3":{}},{"Arr1P4":0.0}],[{"Arr1P1":{}},{"Arr1P2":{}},{"Arr1P3":{}},{"Arr1P4":0.0}],[{"Arr1P1":{}},{"Arr1P2":{}},{"Arr1P3":{}},{"Arr1P4":0.0}
    ]]},{"Parm5":{}},{"Parm6":{}},{"Parm7":{}},{"Parm8":{}},{"Parm9":0.0},{"Parm10":0.0},{"Arr2Count":3},{"Arr2":[[{"Arr2P1":{}},{"Arr2P2":{}},{"Arr2P3":{}},{"Arr2P4":{}},{"Arr2P5":{}}
    ],[{"Arr2P1":{}},{"Arr2P2":{}},{"Arr2P3":{}},{"Arr2P4":{}},{"Arr2P5":{}}],[{"Arr2P1":{}},{"Arr2P2":{}},{"Arr2P3":{}},{"Arr2P4":{}},{"Arr2P5":{}}],[{"Arr2P1":{}},{"Arr2P2":{}},{"Arr
    2P3":{}},{"Arr2P4":{}},{"Arr2P5":{}}],[{"Arr2P1":{}},{"Arr2P2":{}},{"Arr2P3":{}},{"Arr2P4":{}},{"Arr2P5":{}}],[{"Arr2P1":{}},{"Arr2P2":{}},{"Arr2P3":{}},{"Arr2P4":{}},{"Arr2P5":{}}
    ],[{"Arr2P1":{}},{"Arr2P2":{}},{"Arr2P3":{}},{"Arr2P4":{}},{"Arr2P5":{}}],[{"Arr2P1":{}},{"Arr2P2":{}},{"Arr2P3":{}},{"Arr2P4":{}},{"Arr2P5":{}}],[{"Arr2P1":{}},{"Arr2P2":{}},{"Arr
    2P3":{}},{"Arr2P4":{}},{"Arr2P5":{}}],[{"Arr2P1":{}},{"Arr2P2":{}},{"Arr2P3":{}},{"Arr2P4":{}},{"Arr2P5":{}}]]},{"Parm11":"a"}]}]}"
    PHP Notice:  Undefined variable: string in test3000_sql400json_odbc.php on line 46
    success (0)
    

    Here is some dumps from the server side.
    Crash:

    EVAL clob:x 1440                                                     
       00000     0000059A C07F9787 947F7ABA 25404040   - ...ªä"pgm":¬.   
       00010     40C07F95 8194857F 7A7FC8C1 D4C5D3C1   -  ä"name":"HAMELA
       00020     F0F37F6B 40407F93 89827F7A 7FC4C2F2   - 03",  "lib":"DB2
       00030     D1E2D6D5 7FD06B25 40404040 C07FA27F   - JSON"å,.    ä"s"
       00040     7A40BA25 40404040 40404040 C07F9581   - : ¬.        ä"na
       00050     94857F7A 7FD78199 94F17F6B 407FA3A8   - me":"Parm1", "ty
       00060     97857F7A 7FF1817F 6B407FA5 8193A485   - pe":"1a", "value
       00070     7F7A7F7F D06B2540 40404040 404040C0   - ":""å,.        ä
       00080     7F958194 857F7A7F D7819994 F27F6B40   - "name":"Parm2", 
       00090     7FA3A897 857F7A7F F1F8817F 6B407FA5   - "type":"18a", "v
       000A0     8193A485 7F7A7F43 7FD06B25 40404040   - alue":"{"Ã¥,.    
       000B0     40404040 C07F9581 94857F7A 7FD78199   -     ä"name":"Par
       000C0     94F37F6B 407FA3A8 97857F7A 7FF2817F   - m3", "type":"2a"
       000D0     6B407FA5 8193A485 7F7A7F7F D06B2540   - , "value":""Ã¥,. 
       000E0     40404040 404040C0 7F958194 857F7A7F   -        ä"name":"
       000F0     D7819994 F47F6B40 7FA3A897 857F7A7F   - Parm4", "type":"
       00100     F1F0817F 6B407FA5 8193A485 7F7A7F7F   - 10a", "value":""
       00110     D06B2540 40404040 404040C0 7F958194   - å,.        ä"nam
       00120     857F7A7F C19999F1 C396A495 A37F6B40   - e":"Arr1Count", 
       00130     7FA3A897 857F7A7F F3A2F07F 6B407FA5   - "type":"3s0", "v
       00140     8193A485 7F7AF0D0 25404040 40BBD06B   - alue":0Ã¥.    |Ã¥,
       00150     25404040 40C07F84 A27F7A40 BAC07F95   - .    ä"ds": ¬ä"n
       00160     8194857F 7A7FC199 99F17F6B 407F8489   - ame":"Arr1", "di
       00170     947F7AF1 F0D06B25 40404040 40404040   - m":10Ã¥,.        
       00180     C07FA27F 7ABA2540 40404040 40404040   - ä"s":¬.         
       00190     404040C0 7F958194 857F7A7F C19999F1   -    ä"name":"Arr1
       001A0     D7F17F6B 407FA3A8 97857F7A 7FF7817F   - P1", "type":"7a"
       001B0     6B407FA5 8193A485 7F7A7F7F D06B2540   - , "value":""Ã¥,. 
       001C0     40404040 40404040 404040C0 7F958194   -            ä"nam
       001D0     857F7A7F C19999F1 D7F27F6B 407FA3A8   - e":"Arr1P2", "ty
       001E0     97857F7A 7FF1F3F2 817F6B40 7FA58193   - pe":"132a", "val
       001F0     A4857F7A 7F7FD06B 25404040 40404040   - ue":""Ã¥,.       
       00200     40404040 40C07F95 8194857F 7A7FC199   -      ä"name":"Ar
       00210     99F1D7F3 7F6B407F A3A89785 7F7A7FF3   - r1P3", "type":"3
       00220     F0817F6B 407FA581 93A4857F 7A7F7FD0   - 0a", "value":""Ã¥
       00230     6B254040 40404040 40404040 4040C07F   - ,.            ä"
       00240     95819485 7F7A7FC1 9999F1D7 F47F6B40   - name":"Arr1P4", 
       00250     7FA3A897 857F7A7F F1A2F07F 6B407FA5   - "type":"1s0", "v
       00260     8193A485 7F7AF0D0 25404040 40404040   - alue":0Ã¥.       
       00270     40BBD025 40404040 BBD06B25 40404040   -  |Ã¥.    |Ã¥,.    
       00280     C07FA27F 7A40BA25 40404040 40404040   - ä"s": ¬.        
       00290     C07F9581 94857F7A 7FD78199 94F57F6B   - ä"name":"Parm5",
       002A0     407FA3A8 97857F7A 7FF1817F 6B407FA5   -  "type":"1a", "v
       002B0     8193A485 7F7A7F7F D06B2540 40404040   - alue":""Ã¥,.     
       002C0     404040C0 7F958194 857F7A7F D7819994   -    ä"name":"Parm
       002D0     F67F6B40 7FA3A897 857F7A7F F4817F6B   - 6", "type":"4a",
       002E0     407FA581 93A4857F 7A7F7FD0 6B254040   -  "value":""Ã¥,.  
       002F0     40404040 4040C07F 95819485 7F7A7FD7   -       ä"name":"P
       00300     819994F7 7F6B407F A3A89785 7F7A7FF1   - arm7", "type":"1
       00310     F8817F6B 407FA581 93A4857F 7A7F7FD0   - 8a", "value":""Ã¥
       00320     6B254040 40404040 4040C07F 95819485   - ,.        ä"name
       00330     7F7A7FD7 819994F8 7F6B407F A3A89785   - ":"Parm8", "type
       00340     7F7A7FF1 F0F0817F 6B407FA5 8193A485   - ":"100a", "value
       00350     7F7A7F7F D06B2540 40404040 404040C0   - ":""å,.        ä
       00360     7F958194 857F7A7F D7819994 F97F6B40   - "name":"Parm9", 
       00370     7FA3A897 857F7A7F F3A2F07F 6B407FA5   - "type":"3s0", "v
       00380     8193A485 7F7AF0D0 6B254040 40404040   - alue":0Ã¥,.      
       00390     4040C07F 95819485 7F7A7FD7 819994F1   -   ä"name":"Parm1
       003A0     F07F6B40 7FA3A897 857F7A7F F3A2F07F   - 0", "type":"3s0"
       003B0     6B407FA5 8193A485 7F7AF0D0 25404040   - , "value":0Ã¥.   
       003C0     40BBD06B 25404040 40C07FA2 7F7A40C0   -  |å,.    ä"s": ä
       003D0     7F958194 857F7A7F C19999F2 C396A495   - "name":"Arr2Coun
       003E0     A37F6B40 7FA3A897 857F7A7F F5A2F07F   - t", "type":"5s0"
       003F0     6B407FA5 8193A485 7F7AF3D0 D06B2540   - , "value":3åå,. 
       00400     404040C0 7F84A27F 7A40BAC0 7F958194   -    ä"ds": ¬ä"nam
       00410     857F7A7F C19999F2 7F6B407F 8489947F   - e":"Arr2", "dim"
       00420     7AF1F0D0 6B254040 40404040 4040C07F   - :10å,.        ä"
       00430     A27F7ABA 25404040 40404040 40404040   - s":¬.           
       00440     40C07F95 8194857F 7A7FC199 99F2D7F1   -  ä"name":"Arr2P1
       00450     7F6B407F A3A89785 7F7A7FF1 817F6B40   - ", "type":"1a", 
       00460     7FA58193 A4857F7A 7F7FD06B 25404040   - "value":""Ã¥,.   
       00470     40404040 40404040 40C07F95 8194857F   -          ä"name"
       00480     7A7FC199 99F2D7F2 7F6B407F A3A89785   - :"Arr2P2", "type
       00490     7F7A7FF3 F0817F6B 407FA581 93A4857F   - ":"30a", "value"
       004A0     7A7F7FD0 6B254040 40404040 40404040   - :""Ã¥,.          
       004B0     4040C07F 95819485 7F7A7FC1 9999F2D7   -   ä"name":"Arr2P
       004C0     F37F6B40 7FA3A897 857F7A7F F4817F6B   - 3", "type":"4a",
       004D0     407FA581 93A4857F 7A7F7FD0 6B254040   -  "value":""Ã¥,.  
       004E0     40404040 40404040 4040C07F 95819485   -           ä"name
       004F0     7F7A7FC1 9999F2D7 F47F6B40 7FA3A897   - ":"Arr2P4", "typ
       00500     857F7A7F F1F8817F 6B407FA5 8193A485   - e":"18a", "value
       00510     7F7A7F7F D06B2540 40404040 40404040   - ":""Ã¥,.         
       00520     404040C0 7F958194 857F7A7F C19999F2   -    ä"name":"Arr2
       00530     D7F57F6B 407FA3A8 97857F7A 7FF1F0F0   - P5", "type":"100
       00540     817F6B40 7FA58193 A4857F7A 7F7FD025   - a", "value":""Ã¥.
       00550     40404040 40404040 BBD02540 404040BB   -         |Ã¥.    |
       00560     D06B2540 404040C0 7FA27F7A 40C07F95   - å,.    ä"s": ä"n
       00570     8194857F 7A7FD781 9994F1F1 7F6B407F   - ame":"Parm11", "
       00580     A3A89785 7F7A7FF3 F0817F6B 407FA581   - type":"30a", "va
       00590     93A4857F 7A7F7FD0 D025BBD0 25250000   - lue":""åå.|å....
    
    
    EVAL clobData:x 1440                                                 
       00000     C07F9787 947F7ABA 25404040 40C07F95   - ä"pgm":¬.    ä"n
       00010     8194857F 7A7FC8C1 D4C5D3C1 F0F37F6B   - ame":"HAMELA03",
       00020     40407F93 89827F7A 7FC4C2F2 D1E2D6D5   -   "lib":"DB2JSON
       00030     7FD06B25 40404040 C07FA27F 7A40BA25   - "å,.    ä"s": ¬.
       00040     40404040 40404040 C07F9581 94857F7A   -         ä"name":
       00050     7FD78199 94F17F6B 407FA3A8 97857F7A   - "Parm1", "type":
       00060     7FF1817F 6B407FA5 8193A485 7F7A7F7F   - "1a", "value":""
       00070     D06B2540 40404040 404040C0 7F958194   - å,.        ä"nam
       00080     857F7A7F D7819994 F27F6B40 7FA3A897   - e":"Parm2", "typ
       00090     857F7A7F F1F8817F 6B407FA5 8193A485   - e":"18a", "value
       000A0     7F7A7F43 7FD06B25 40404040 40404040   - ":"{"Ã¥,.        
       000B0     C07F9581 94857F7A 7FD78199 94F37F6B   - ä"name":"Parm3",
       000C0     407FA3A8 97857F7A 7FF2817F 6B407FA5   -  "type":"2a", "v
       000D0     8193A485 7F7A7F7F D06B2540 40404040   - alue":""Ã¥,.     
       000E0     404040C0 7F958194 857F7A7F D7819994   -    ä"name":"Parm
       000F0     F47F6B40 7FA3A897 857F7A7F F1F0817F   - 4", "type":"10a"
       00100     6B407FA5 8193A485 7F7A7F7F D06B2540   - , "value":""Ã¥,. 
       00110     40404040 404040C0 7F958194 857F7A7F   -        ä"name":"
       00120     C19999F1 C396A495 A37F6B40 7FA3A897   - Arr1Count", "typ
       00130     857F7A7F F3A2F07F 6B407FA5 8193A485   - e":"3s0", "value
       00140     7F7AF0D0 25404040 40BBD06B 25404040   - ":0Ã¥.    |Ã¥,.   
       00150     40C07F84 A27F7A40 BAC07F95 8194857F   -  ä"ds": ¬ä"name"
       00160     7A7FC199 99F17F6B 407F8489 947F7AF1   - :"Arr1", "dim":1
       00170     F0D06B25 40404040 40404040 C07FA27F   - 0å,.        ä"s"
       00180     7ABA2540 40404040 40404040 404040C0   - :¬.            ä
       00190     7F958194 857F7A7F C19999F1 D7F17F6B   - "name":"Arr1P1",
       001A0     407FA3A8 97857F7A 7FF7817F 6B407FA5   -  "type":"7a", "v
       001B0     8193A485 7F7A7F7F D06B2540 40404040   - alue":""Ã¥,.     
       001C0     40404040 404040C0 7F958194 857F7A7F   -        ä"name":"
       001D0     C19999F1 D7F27F6B 407FA3A8 97857F7A   - Arr1P2", "type":
       001E0     7FF1F3F2 817F6B40 7FA58193 A4857F7A   - "132a", "value":
       001F0     7F7FD06B 25404040 40404040 40404040   - ""Ã¥,.           
       00200     40C07F95 8194857F 7A7FC199 99F1D7F3   -  ä"name":"Arr1P3
       00210     7F6B407F A3A89785 7F7A7FF3 F0817F6B   - ", "type":"30a",
       00220     407FA581 93A4857F 7A7F7FD0 6B254040   -  "value":""Ã¥,.  
       00230     40404040 40404040 4040C07F 95819485   -           ä"name
       00240     7F7A7FC1 9999F1D7 F47F6B40 7FA3A897   - ":"Arr1P4", "typ
       00250     857F7A7F F1A2F07F 6B407FA5 8193A485   - e":"1s0", "value
       00260     7F7AF0D0 25404040 40404040 40BBD025   - ":0Ã¥.        |Ã¥.
       00270     40404040 BBD06B25 40404040 C07FA27F   -     |å,.    ä"s"
       00280     7A40BA25 40404040 40404040 C07F9581   - : ¬.        ä"na
       00290     94857F7A 7FD78199 94F57F6B 407FA3A8   - me":"Parm5", "ty
       002A0     97857F7A 7FF1817F 6B407FA5 8193A485   - pe":"1a", "value
       002B0     7F7A7F7F D06B2540 40404040 404040C0   - ":""å,.        ä
       002C0     7F958194 857F7A7F D7819994 F67F6B40   - "name":"Parm6", 
       002D0     7FA3A897 857F7A7F F4817F6B 407FA581   - "type":"4a", "va
       002E0     93A4857F 7A7F7FD0 6B254040 40404040   - lue":""Ã¥,.      
       002F0     4040C07F 95819485 7F7A7FD7 819994F7   -   ä"name":"Parm7
       00300     7F6B407F A3A89785 7F7A7FF1 F8817F6B   - ", "type":"18a",
       00310     407FA581 93A4857F 7A7F7FD0 6B254040   -  "value":""Ã¥,.  
       00320     40404040 4040C07F 95819485 7F7A7FD7   -       ä"name":"P
       00330     819994F8 7F6B407F A3A89785 7F7A7FF1   - arm8", "type":"1
       00340     F0F0817F 6B407FA5 8193A485 7F7A7F7F   - 00a", "value":""
       00350     D06B2540 40404040 404040C0 7F958194   - å,.        ä"nam
       00360     857F7A7F D7819994 F97F6B40 7FA3A897   - e":"Parm9", "typ
       00370     857F7A7F F3A2F07F 6B407FA5 8193A485   - e":"3s0", "value
       00380     7F7AF0D0 6B254040 40404040 4040C07F   - ":0å,.        ä"
       00390     95819485 7F7A7FD7 819994F1 F07F6B40   - name":"Parm10", 
       003A0     7FA3A897 857F7A7F F3A2F07F 6B407FA5   - "type":"3s0", "v
       003B0     8193A485 7F7AF0D0 25404040 40BBD06B   - alue":0Ã¥.    |Ã¥,
       003C0     25404040 40C07FA2 7F7A40C0 7F958194   - .    ä"s": ä"nam
       003D0     857F7A7F C19999F2 C396A495 A37F6B40   - e":"Arr2Count", 
       003E0     7FA3A897 857F7A7F F5A2F07F 6B407FA5   - "type":"5s0", "v
       003F0     8193A485 7F7AF3D0 D06B2540 404040C0   - alue":3åå,.    ä
       00400     7F84A27F 7A40BAC0 7F958194 857F7A7F   - "ds": Š"name":"
       00410     C19999F2 7F6B407F 8489947F 7AF1F0D0   - Arr2", "dim":10Ã¥
       00420     6B254040 40404040 4040C07F A27F7ABA   - ,.        ä"s":¬
       00430     25404040 40404040 40404040 40C07F95   - .            ä"n
       00440     8194857F 7A7FC199 99F2D7F1 7F6B407F   - ame":"Arr2P1", "
       00450     A3A89785 7F7A7FF1 817F6B40 7FA58193   - type":"1a", "val
       00460     A4857F7A 7F7FD06B 25404040 40404040   - ue":""Ã¥,.       
       00470     40404040 40C07F95 8194857F 7A7FC199   -      ä"name":"Ar
       00480     99F2D7F2 7F6B407F A3A89785 7F7A7FF3   - r2P2", "type":"3
       00490     F0817F6B 407FA581 93A4857F 7A7F7FD0   - 0a", "value":""Ã¥
       004A0     6B254040 40404040 40404040 4040C07F   - ,.            ä"
       004B0     95819485 7F7A7FC1 9999F2D7 F37F6B40   - name":"Arr2P3", 
       004C0     7FA3A897 857F7A7F F4817F6B 407FA581   - "type":"4a", "va
       004D0     93A4857F 7A7F7FD0 6B254040 40404040   - lue":""Ã¥,.      
       004E0     40404040 4040C07F 95819485 7F7A7FC1   -       ä"name":"A
       004F0     9999F2D7 F47F6B40 7FA3A897 857F7A7F   - rr2P4", "type":"
       00500     F1F8817F 6B407FA5 8193A485 7F7A7F7F   - 18a", "value":""
       00510     D06B2540 40404040 40404040 404040C0   - å,.            ä
       00520     7F958194 857F7A7F C19999F2 D7F57F6B   - "name":"Arr2P5",
       00530     407FA3A8 97857F7A 7FF1F0F0 817F6B40   -  "type":"100a", 
       00540     7FA58193 A4857F7A 7F7FD025 40404040   - "value":""Ã¥.    
       00550     40404040 BBD02540 404040BB D06B2540   -     |Ã¥.    |Ã¥,. 
       00560     404040C0 7FA27F7A 40C07F95 8194857F   -    ä"s": ä"name"
       00570     7A7FD781 9994F1F1 7F6B407F A3A89785   - :"Parm11", "type
       00580     7F7A7FF3 F0817F6B 407FA581 93A4857F   - ":"30a", "value"
       00590     7A7F7FD0 D025BBD0 00000000 00000000   - :""åå.|å........
    
    EVAL outData:x 1560                                                  
       00000     C07FA283 998997A3 7F7ABAC0 7F978794   - ä"script":¬ä"pgm
       00010     7F7ABA7F C8C1D4C5 D3C1F0F3 7F6B7FC4   - ":¬"HAMELA03","D
       00020     C2F2D1E2 D6D57F6B C07FD781 9994F17F   - B2JSON",ä"Parm1"
       00030     7AC0D0D0 6BC07FD7 819994F2 7F7A7F43   - :äåå,ä"Parm2":"{
       00040     7FD06BC0 7FD78199 94F37F7A C0D0D06B   - "å,ä"Parm3":äåå,
       00050     C07FD781 9994F47F 7AC0D0D0 6BC07FC1   - ä"Parm4":äåå,ä"A
       00060     9999F1C3 96A495A3 7F7AF1D0 6BC07FC1   - rr1Count":1å,ä"A
       00070     9999F17F 7ABABAC0 7FC19999 F1D7F17F   - rr1":¬¬ä"Arr1P1"
       00080     7AC0D0D0 6BC07FC1 9999F1D7 F27F7AC0   - :äåå,ä"Arr1P2":ä
       00090     D0D06BC0 7FC19999 F1D7F37F 7AC0D0D0   - åå,ä"Arr1P3":äåå
       000A0     6BC07FC1 9999F1D7 F47F7AF0 4BF0D0BB   - ,ä"Arr1P4":0.0å|
       000B0     6BBAC07F C19999F1 D7F17F7A C0D0D06B   - ,¬ä"Arr1P1":äåå,
       000C0     C07FC199 99F1D7F2 7F7AC0D0 D06BC07F   - ä"Arr1P2":äåå,ä"
       000D0     C19999F1 D7F37F7A C0D0D06B C07FC199   - Arr1P3":äåå,ä"Ar
       000E0     99F1D7F4 7F7AF04B F0D0BB6B BAC07FC1   - r1P4":0.0å|,¬ä"A
       000F0     9999F1D7 F17F7AC0 D0D06BC0 7FC19999   - rr1P1":äåå,ä"Arr
       00100     F1D7F27F 7AC0D0D0 6BC07FC1 9999F1D7   - 1P2":äåå,ä"Arr1P
       00110     F37F7AC0 D0D06BC0 7FC19999 F1D7F47F   - 3":äåå,ä"Arr1P4"
       00120     7AF04BF0 D0BB6BBA C07FC199 99F1D7F1   - :0.0å|,¬ä"Arr1P1
       00130     7F7AC0D0 D06BC07F C19999F1 D7F27F7A   - ":äåå,ä"Arr1P2":
       00140     C0D0D06B C07FC199 99F1D7F3 7F7AC0D0   - äåå,ä"Arr1P3":äå
       00150     D06BC07F C19999F1 D7F47F7A F04BF0D0   - å,ä"Arr1P4":0.0å
       00160     BB6BBAC0 7FC19999 F1D7F17F 7AC0D0D0   - |,¬ä"Arr1P1":äåå
       00170     6BC07FC1 9999F1D7 F27F7AC0 D0D06BC0   - ,ä"Arr1P2":äåå,ä
       00180     7FC19999 F1D7F37F 7AC0D0D0 6BC07FC1   - "Arr1P3":äåå,ä"A
       00190     9999F1D7 F47F7AF0 4BF0D0BB 6BBAC07F   - rr1P4":0.0å|,¬ä"
       001A0     C19999F1 D7F17F7A C0D0D06B C07FC199   - Arr1P1":äåå,ä"Ar
       001B0     99F1D7F2 7F7AC0D0 D06BC07F C19999F1   - r1P2":äåå,ä"Arr1
       001C0     D7F37F7A C0D0D06B C07FC199 99F1D7F4   - P3":äåå,ä"Arr1P4
       001D0     7F7AF04B F0D0BB6B BAC07FC1 9999F1D7   - ":0.0å|,¬ä"Arr1P
       001E0     F17F7AC0 D0D06BC0 7FC19999 F1D7F27F   - 1":äåå,ä"Arr1P2"
       001F0     7AC0D0D0 6BC07FC1 9999F1D7 F37F7AC0   - :äåå,ä"Arr1P3":ä
       00200     D0D06BC0 7FC19999 F1D7F47F 7AF04BF0   - åå,ä"Arr1P4":0.0
       00210     D0BB6BBA C07FC199 99F1D7F1 7F7AC0D0   - å|,¬ä"Arr1P1":äå
       00220     D06BC07F C19999F1 D7F27F7A C0D0D06B   - å,ä"Arr1P2":äåå,
       00230     C07FC199 99F1D7F3 7F7AC0D0 D06BC07F   - ä"Arr1P3":äåå,ä"
       00240     C19999F1 D7F47F7A F04BF0D0 BB6BBAC0   - Arr1P4":0.0å|,¬ä
       00250     7FC19999 F1D7F17F 7AC0D0D0 6BC07FC1   - "Arr1P1":äåå,ä"A
       00260     9999F1D7 F27F7AC0 D0D06BC0 7FC19999   - rr1P2":äåå,ä"Arr
       00270     F1D7F37F 7AC0D0D0 6BC07FC1 9999F1D7   - 1P3":äåå,ä"Arr1P
       00280     F47F7AF0 4BF0D0BB 6BBAC07F C19999F1   - 4":0.0å|,¬ä"Arr1
       00290     D7F17F7A C0D0D06B C07FC199 99F1D7F2   - P1":äåå,ä"Arr1P2
       002A0     7F7AC0D0 D06BC07F C19999F1 D7F37F7A   - ":äåå,ä"Arr1P3":
       002B0     C0D0D06B C07FC199 99F1D7F4 7F7AF04B   - äåå,ä"Arr1P4":0.
       002C0     F0D0BBBB D06BC07F D7819994 F57F7AC0   - 0å||å,ä"Parm5":ä
       002D0     D0D06BC0 7FD78199 94F67F7A C0D0D06B   - åå,ä"Parm6":äåå,
       002E0     C07FD781 9994F77F 7AC0D0D0 6BC07FD7   - ä"Parm7":äåå,ä"P
       002F0     819994F8 7F7AC0D0 D06BC07F D7819994   - arm8":äåå,ä"Parm
       00300     F97F7AF0 4BF0D06B C07FD781 9994F1F0   - 9":0.0å,ä"Parm10
       00310     7F7AF04B F0D06BC0 7FC19999 F2C396A4   - ":0.0å,ä"Arr2Cou
       00320     95A37F7A F3D06BC0 7FC19999 F27F7ABA   - nt":3å,ä"Arr2":¬
       00330     BAC07FC1 9999F2D7 F17F7AC0 D0D06BC0   - ¬ä"Arr2P1":äåå,ä
       00340     7FC19999 F2D7F27F 7AC0D0D0 6BC07FC1   - "Arr2P2":äåå,ä"A
       00350     9999F2D7 F37F7AC0 D0D06BC0 7FC19999   - rr2P3":äåå,ä"Arr
       00360     F2D7F47F 7AC0D0D0 6BC07FC1 9999F2D7   - 2P4":äåå,ä"Arr2P
       00370     F57F7AC0 D0D0BB6B BAC07FC1 9999F2D7   - 5":äåå|,¬ä"Arr2P
       00380     F17F7AC0 D0D06BC0 7FC19999 F2D7F27F   - 1":äåå,ä"Arr2P2"
       00390     7AC0D0D0 6BC07FC1 9999F2D7 F37F7AC0   - :äåå,ä"Arr2P3":ä
       003A0     D0D06BC0 7FC19999 F2D7F47F 7AC0D0D0   - åå,ä"Arr2P4":äåå
       003B0     6BC07FC1 9999F2D7 F57F7AC0 D0D0BB6B   - ,ä"Arr2P5":äåå|,
       003C0     BAC07FC1 9999F2D7 F17F7AC0 D0D06BC0   - ¬ä"Arr2P1":äåå,ä
       003D0     7FC19999 F2D7F27F 7AC0D0D0 6BC07FC1   - "Arr2P2":äåå,ä"A
       003E0     9999F2D7 F37F7AC0 D0D06BC0 7FC19999   - rr2P3":äåå,ä"Arr
       003F0     F2D7F47F 7AC0D0D0 6BC07FC1 9999F2D7   - 2P4":äåå,ä"Arr2P
       00400     F57F7AC0 D0D0BB6B BAC07FC1 9999F2D7   - 5":äåå|,¬ä"Arr2P
       00410     F17F7AC0 D0D06BC0 7FC19999 F2D7F27F   - 1":äåå,ä"Arr2P2"
       00420     7AC0D0D0 6BC07FC1 9999F2D7 F37F7AC0   - :äåå,ä"Arr2P3":ä
       00430     D0D06BC0 7FC19999 F2D7F47F 7AC0D0D0   - åå,ä"Arr2P4":äåå
       00440     6BC07FC1 9999F2D7 F57F7AC0 D0D0BB6B   - ,ä"Arr2P5":äåå|,
       00450     BAC07FC1 9999F2D7 F17F7AC0 D0D06BC0   - ¬ä"Arr2P1":äåå,ä
       00460     7FC19999 F2D7F27F 7AC0D0D0 6BC07FC1   - "Arr2P2":äåå,ä"A
       00470     9999F2D7 F37F7AC0 D0D06BC0 7FC19999   - rr2P3":äåå,ä"Arr
       00480     F2D7F47F 7AC0D0D0 6BC07FC1 9999F2D7   - 2P4":äåå,ä"Arr2P
       00490     F57F7AC0 D0D0BB6B BAC07FC1 9999F2D7   - 5":äåå|,¬ä"Arr2P
       004A0     F17F7AC0 D0D06BC0 7FC19999 F2D7F27F   - 1":äåå,ä"Arr2P2"
       004B0     7AC0D0D0 6BC07FC1 9999F2D7 F37F7AC0   - :äåå,ä"Arr2P3":ä
       004C0     D0D06BC0 7FC19999 F2D7F47F 7AC0D0D0   - åå,ä"Arr2P4":äåå
       004D0     6BC07FC1 9999F2D7 F57F7AC0 D0D0BB6B   - ,ä"Arr2P5":äåå|,
       004E0     BAC07FC1 9999F2D7 F17F7AC0 D0D06BC0   - ¬ä"Arr2P1":äåå,ä
       004F0     7FC19999 F2D7F27F 7AC0D0D0 6BC07FC1   - "Arr2P2":äåå,ä"A
       00500     9999F2D7 F37F7AC0 D0D06BC0 7FC19999   - rr2P3":äåå,ä"Arr
       00510     F2D7F47F 7AC0D0D0 6BC07FC1 9999F2D7   - 2P4":äåå,ä"Arr2P
       00520     F57F7AC0 D0D0BB6B BAC07FC1 9999F2D7   - 5":äåå|,¬ä"Arr2P
       00530     F17F7AC0 D0D06BC0 7FC19999 F2D7F27F   - 1":äåå,ä"Arr2P2"
       00540     7AC0D0D0 6BC07FC1 9999F2D7 F37F7AC0   - :äåå,ä"Arr2P3":ä
       00550     D0D06BC0 7FC19999 F2D7F47F 7AC0D0D0   - åå,ä"Arr2P4":äåå
       00560     6BC07FC1 9999F2D7 F57F7AC0 D0D0BB6B   - ,ä"Arr2P5":äåå|,
       00570     BAC07FC1 9999F2D7 F17F7AC0 D0D06BC0   - ¬ä"Arr2P1":äåå,ä
       00580     7FC19999 F2D7F27F 7AC0D0D0 6BC07FC1   - "Arr2P2":äåå,ä"A
       00590     9999F2D7 F37F7AC0 D0D06BC0 7FC19999   - rr2P3":äåå,ä"Arr
       005A0     F2D7F47F 7AC0D0D0 6BC07FC1 9999F2D7   - 2P4":äåå,ä"Arr2P
       005B0     F57F7AC0 D0D0BB6B BAC07FC1 9999F2D7   - 5":äåå|,¬ä"Arr2P
       005C0     F17F7AC0 D0D06BC0 7FC19999 F2D7F27F   - 1":äåå,ä"Arr2P2"
       005D0     7AC0D0D0 6BC07FC1 9999F2D7 F37F7AC0   - :äåå,ä"Arr2P3":ä
       005E0     D0D06BC0 7FC19999 F2D7F47F 7AC0D0D0   - åå,ä"Arr2P4":äåå
       005F0     6BC07FC1 9999F2D7 F57F7AC0 D0D0BBBB   - ,ä"Arr2P5":äåå||
       00600     D06BC07F D7819994 F1F17F7A 7F437FD0   - å,ä"Parm11":"{"å
       00610     BBD0BBD0 00000000 ........ ........   - |Ã¥|Ã¥............
    

    No crash:

    EVAL clob:x 1440                                                     
       00000     0000059A C07F9787 947F7ABA 25404040   - ...ªä"pgm":¬.   
       00010     40C07F95 8194857F 7A7FC8C1 D4C5D3C1   -  ä"name":"HAMELA
       00020     F0F37F6B 40407F93 89827F7A 7FC4C2F2   - 03",  "lib":"DB2
       00030     D1E2D6D5 7FD06B25 40404040 C07FA27F   - JSON"å,.    ä"s"
       00040     7A40BA25 40404040 40404040 C07F9581   - : ¬.        ä"na
       00050     94857F7A 7FD78199 94F17F6B 407FA3A8   - me":"Parm1", "ty
       00060     97857F7A 7FF1817F 6B407FA5 8193A485   - pe":"1a", "value
       00070     7F7A7F7F D06B2540 40404040 404040C0   - ":""å,.        ä
       00080     7F958194 857F7A7F D7819994 F27F6B40   - "name":"Parm2", 
       00090     7FA3A897 857F7A7F F1F8817F 6B407FA5   - "type":"18a", "v
       000A0     8193A485 7F7A7F81 7FD06B25 40404040   - alue":"a"Ã¥,.    
       000B0     40404040 C07F9581 94857F7A 7FD78199   -     ä"name":"Par
       000C0     94F37F6B 407FA3A8 97857F7A 7FF2817F   - m3", "type":"2a"
       000D0     6B407FA5 8193A485 7F7A7F7F D06B2540   - , "value":""Ã¥,. 
       000E0     40404040 404040C0 7F958194 857F7A7F   -        ä"name":"
       000F0     D7819994 F47F6B40 7FA3A897 857F7A7F   - Parm4", "type":"
       00100     F1F0817F 6B407FA5 8193A485 7F7A7F7F   - 10a", "value":""
       00110     D06B2540 40404040 404040C0 7F958194   - å,.        ä"nam
       00120     857F7A7F C19999F1 C396A495 A37F6B40   - e":"Arr1Count", 
       00130     7FA3A897 857F7A7F F3A2F07F 6B407FA5   - "type":"3s0", "v
       00140     8193A485 7F7AF0D0 25404040 40BBD06B   - alue":0Ã¥.    |Ã¥,
       00150     25404040 40C07F84 A27F7A40 BAC07F95   - .    ä"ds": ¬ä"n
       00160     8194857F 7A7FC199 99F17F6B 407F8489   - ame":"Arr1", "di
       00170     947F7AF1 F0D06B25 40404040 40404040   - m":10Ã¥,.        
       00180     C07FA27F 7ABA2540 40404040 40404040   - ä"s":¬.         
       00190     404040C0 7F958194 857F7A7F C19999F1   -    ä"name":"Arr1
       001A0     D7F17F6B 407FA3A8 97857F7A 7FF7817F   - P1", "type":"7a"
       001B0     6B407FA5 8193A485 7F7A7F7F D06B2540   - , "value":""Ã¥,. 
       001C0     40404040 40404040 404040C0 7F958194   -            ä"nam
       001D0     857F7A7F C19999F1 D7F27F6B 407FA3A8   - e":"Arr1P2", "ty
       001E0     97857F7A 7FF1F3F2 817F6B40 7FA58193   - pe":"132a", "val
       001F0     A4857F7A 7F7FD06B 25404040 40404040   - ue":""Ã¥,.       
       00200     40404040 40C07F95 8194857F 7A7FC199   -      ä"name":"Ar
       00210     99F1D7F3 7F6B407F A3A89785 7F7A7FF3   - r1P3", "type":"3
       00220     F0817F6B 407FA581 93A4857F 7A7F7FD0   - 0a", "value":""Ã¥
       00230     6B254040 40404040 40404040 4040C07F   - ,.            ä"
       00240     95819485 7F7A7FC1 9999F1D7 F47F6B40   - name":"Arr1P4", 
       00250     7FA3A897 857F7A7F F1A2F07F 6B407FA5   - "type":"1s0", "v
       00260     8193A485 7F7AF0D0 25404040 40404040   - alue":0Ã¥.       
       00270     40BBD025 40404040 BBD06B25 40404040   -  |Ã¥.    |Ã¥,.    
       00280     C07FA27F 7A40BA25 40404040 40404040   - ä"s": ¬.        
       00290     C07F9581 94857F7A 7FD78199 94F57F6B   - ä"name":"Parm5",
       002A0     407FA3A8 97857F7A 7FF1817F 6B407FA5   -  "type":"1a", "v
       002B0     8193A485 7F7A7F7F D06B2540 40404040   - alue":""Ã¥,.     
       002C0     404040C0 7F958194 857F7A7F D7819994   -    ä"name":"Parm
       002D0     F67F6B40 7FA3A897 857F7A7F F4817F6B   - 6", "type":"4a",
       002E0     407FA581 93A4857F 7A7F7FD0 6B254040   -  "value":""Ã¥,.  
       002F0     40404040 4040C07F 95819485 7F7A7FD7   -       ä"name":"P
       00300     819994F7 7F6B407F A3A89785 7F7A7FF1   - arm7", "type":"1
       00310     F8817F6B 407FA581 93A4857F 7A7F7FD0   - 8a", "value":""Ã¥
       00320     6B254040 40404040 4040C07F 95819485   - ,.        ä"name
       00330     7F7A7FD7 819994F8 7F6B407F A3A89785   - ":"Parm8", "type
       00340     7F7A7FF1 F0F0817F 6B407FA5 8193A485   - ":"100a", "value
       00350     7F7A7F7F D06B2540 40404040 404040C0   - ":""å,.        ä
       00360     7F958194 857F7A7F D7819994 F97F6B40   - "name":"Parm9", 
       00370     7FA3A897 857F7A7F F3A2F07F 6B407FA5   - "type":"3s0", "v
       00380     8193A485 7F7AF0D0 6B254040 40404040   - alue":0Ã¥,.      
       00390     4040C07F 95819485 7F7A7FD7 819994F1   -   ä"name":"Parm1
       003A0     F07F6B40 7FA3A897 857F7A7F F3A2F07F   - 0", "type":"3s0"
       003B0     6B407FA5 8193A485 7F7AF0D0 25404040   - , "value":0Ã¥.   
       003C0     40BBD06B 25404040 40C07FA2 7F7A40C0   -  |å,.    ä"s": ä
       003D0     7F958194 857F7A7F C19999F2 C396A495   - "name":"Arr2Coun
       003E0     A37F6B40 7FA3A897 857F7A7F F5A2F07F   - t", "type":"5s0"
       003F0     6B407FA5 8193A485 7F7AF3D0 D06B2540   - , "value":3åå,. 
       00400     404040C0 7F84A27F 7A40BAC0 7F958194   -    ä"ds": ¬ä"nam
       00410     857F7A7F C19999F2 7F6B407F 8489947F   - e":"Arr2", "dim"
       00420     7AF1F0D0 6B254040 40404040 4040C07F   - :10å,.        ä"
       00430     A27F7ABA 25404040 40404040 40404040   - s":¬.           
       00440     40C07F95 8194857F 7A7FC199 99F2D7F1   -  ä"name":"Arr2P1
       00450     7F6B407F A3A89785 7F7A7FF1 817F6B40   - ", "type":"1a", 
       00460     7FA58193 A4857F7A 7F7FD06B 25404040   - "value":""Ã¥,.   
       00470     40404040 40404040 40C07F95 8194857F   -          ä"name"
       00480     7A7FC199 99F2D7F2 7F6B407F A3A89785   - :"Arr2P2", "type
       00490     7F7A7FF3 F0817F6B 407FA581 93A4857F   - ":"30a", "value"
       004A0     7A7F7FD0 6B254040 40404040 40404040   - :""Ã¥,.          
       004B0     4040C07F 95819485 7F7A7FC1 9999F2D7   -   ä"name":"Arr2P
       004C0     F37F6B40 7FA3A897 857F7A7F F4817F6B   - 3", "type":"4a",
       004D0     407FA581 93A4857F 7A7F7FD0 6B254040   -  "value":""Ã¥,.  
       004E0     40404040 40404040 4040C07F 95819485   -           ä"name
       004F0     7F7A7FC1 9999F2D7 F47F6B40 7FA3A897   - ":"Arr2P4", "typ
       00500     857F7A7F F1F8817F 6B407FA5 8193A485   - e":"18a", "value
       00510     7F7A7F7F D06B2540 40404040 40404040   - ":""Ã¥,.         
       00520     404040C0 7F958194 857F7A7F C19999F2   -    ä"name":"Arr2
       00530     D7F57F6B 407FA3A8 97857F7A 7FF1F0F0   - P5", "type":"100
       00540     817F6B40 7FA58193 A4857F7A 7F7FD025   - a", "value":""Ã¥.
       00550     40404040 40404040 BBD02540 404040BB   -         |Ã¥.    |
       00560     D06B2540 404040C0 7FA27F7A 40C07F95   - å,.    ä"s": ä"n
       00570     8194857F 7A7FD781 9994F1F1 7F6B407F   - ame":"Parm11", "
       00580     A3A89785 7F7A7FF3 F0817F6B 407FA581   - type":"30a", "va
       00590     93A4857F 7A7F7FD0 D025BBD0 25250000   - lue":""åå.|å....
    
    
    EVAL clobData:x 1440                                                 
       00000     C07F9787 947F7ABA 25404040 40C07F95   - ä"pgm":¬.    ä"n
       00010     8194857F 7A7FC8C1 D4C5D3C1 F0F37F6B   - ame":"HAMELA03",
       00020     40407F93 89827F7A 7FC4C2F2 D1E2D6D5   -   "lib":"DB2JSON
       00030     7FD06B25 40404040 C07FA27F 7A40BA25   - "å,.    ä"s": ¬.
       00040     40404040 40404040 C07F9581 94857F7A   -         ä"name":
       00050     7FD78199 94F17F6B 407FA3A8 97857F7A   - "Parm1", "type":
       00060     7FF1817F 6B407FA5 8193A485 7F7A7F7F   - "1a", "value":""
       00070     D06B2540 40404040 404040C0 7F958194   - å,.        ä"nam
       00080     857F7A7F D7819994 F27F6B40 7FA3A897   - e":"Parm2", "typ
       00090     857F7A7F F1F8817F 6B407FA5 8193A485   - e":"18a", "value
       000A0     7F7A7F81 7FD06B25 40404040 40404040   - ":"a"Ã¥,.        
       000B0     C07F9581 94857F7A 7FD78199 94F37F6B   - ä"name":"Parm3",
       000C0     407FA3A8 97857F7A 7FF2817F 6B407FA5   -  "type":"2a", "v
       000D0     8193A485 7F7A7F7F D06B2540 40404040   - alue":""Ã¥,.     
       000E0     404040C0 7F958194 857F7A7F D7819994   -    ä"name":"Parm
       000F0     F47F6B40 7FA3A897 857F7A7F F1F0817F   - 4", "type":"10a"
       00100     6B407FA5 8193A485 7F7A7F7F D06B2540   - , "value":""Ã¥,. 
       00110     40404040 404040C0 7F958194 857F7A7F   -        ä"name":"
       00120     C19999F1 C396A495 A37F6B40 7FA3A897   - Arr1Count", "typ
       00130     857F7A7F F3A2F07F 6B407FA5 8193A485   - e":"3s0", "value
       00140     7F7AF0D0 25404040 40BBD06B 25404040   - ":0Ã¥.    |Ã¥,.   
       00150     40C07F84 A27F7A40 BAC07F95 8194857F   -  ä"ds": ¬ä"name"
       00160     7A7FC199 99F17F6B 407F8489 947F7AF1   - :"Arr1", "dim":1
       00170     F0D06B25 40404040 40404040 C07FA27F   - 0å,.        ä"s"
       00180     7ABA2540 40404040 40404040 404040C0   - :¬.            ä
       00190     7F958194 857F7A7F C19999F1 D7F17F6B   - "name":"Arr1P1",
       001A0     407FA3A8 97857F7A 7FF7817F 6B407FA5   -  "type":"7a", "v
       001B0     8193A485 7F7A7F7F D06B2540 40404040   - alue":""Ã¥,.     
       001C0     40404040 404040C0 7F958194 857F7A7F   -        ä"name":"
       001D0     C19999F1 D7F27F6B 407FA3A8 97857F7A   - Arr1P2", "type":
       001E0     7FF1F3F2 817F6B40 7FA58193 A4857F7A   - "132a", "value":
       001F0     7F7FD06B 25404040 40404040 40404040   - ""Ã¥,.           
       00200     40C07F95 8194857F 7A7FC199 99F1D7F3   -  ä"name":"Arr1P3
       00210     7F6B407F A3A89785 7F7A7FF3 F0817F6B   - ", "type":"30a",
       00220     407FA581 93A4857F 7A7F7FD0 6B254040   -  "value":""Ã¥,.  
       00230     40404040 40404040 4040C07F 95819485   -           ä"name
       00240     7F7A7FC1 9999F1D7 F47F6B40 7FA3A897   - ":"Arr1P4", "typ
       00250     857F7A7F F1A2F07F 6B407FA5 8193A485   - e":"1s0", "value
       00260     7F7AF0D0 25404040 40404040 40BBD025   - ":0Ã¥.        |Ã¥.
       00270     40404040 BBD06B25 40404040 C07FA27F   -     |å,.    ä"s"
       00280     7A40BA25 40404040 40404040 C07F9581   - : ¬.        ä"na
       00290     94857F7A 7FD78199 94F57F6B 407FA3A8   - me":"Parm5", "ty
       002A0     97857F7A 7FF1817F 6B407FA5 8193A485   - pe":"1a", "value
       002B0     7F7A7F7F D06B2540 40404040 404040C0   - ":""å,.        ä
       002C0     7F958194 857F7A7F D7819994 F67F6B40   - "name":"Parm6", 
       002D0     7FA3A897 857F7A7F F4817F6B 407FA581   - "type":"4a", "va
       002E0     93A4857F 7A7F7FD0 6B254040 40404040   - lue":""Ã¥,.      
       002F0     4040C07F 95819485 7F7A7FD7 819994F7   -   ä"name":"Parm7
       00300     7F6B407F A3A89785 7F7A7FF1 F8817F6B   - ", "type":"18a",
       00310     407FA581 93A4857F 7A7F7FD0 6B254040   -  "value":""Ã¥,.  
       00320     40404040 4040C07F 95819485 7F7A7FD7   -       ä"name":"P
       00330     819994F8 7F6B407F A3A89785 7F7A7FF1   - arm8", "type":"1
       00340     F0F0817F 6B407FA5 8193A485 7F7A7F7F   - 00a", "value":""
       00350     D06B2540 40404040 404040C0 7F958194   - å,.        ä"nam
       00360     857F7A7F D7819994 F97F6B40 7FA3A897   - e":"Parm9", "typ
       00370     857F7A7F F3A2F07F 6B407FA5 8193A485   - e":"3s0", "value
       00380     7F7AF0D0 6B254040 40404040 4040C07F   - ":0å,.        ä"
       00390     95819485 7F7A7FD7 819994F1 F07F6B40   - name":"Parm10", 
       003A0     7FA3A897 857F7A7F F3A2F07F 6B407FA5   - "type":"3s0", "v
       003B0     8193A485 7F7AF0D0 25404040 40BBD06B   - alue":0Ã¥.    |Ã¥,
       003C0     25404040 40C07FA2 7F7A40C0 7F958194   - .    ä"s": ä"nam
       003D0     857F7A7F C19999F2 C396A495 A37F6B40   - e":"Arr2Count", 
       003E0     7FA3A897 857F7A7F F5A2F07F 6B407FA5   - "type":"5s0", "v
       003F0     8193A485 7F7AF3D0 D06B2540 404040C0   - alue":3åå,.    ä
       00400     7F84A27F 7A40BAC0 7F958194 857F7A7F   - "ds": Š"name":"
       00410     C19999F2 7F6B407F 8489947F 7AF1F0D0   - Arr2", "dim":10Ã¥
       00420     6B254040 40404040 4040C07F A27F7ABA   - ,.        ä"s":¬
       00430     25404040 40404040 40404040 40C07F95   - .            ä"n
       00440     8194857F 7A7FC199 99F2D7F1 7F6B407F   - ame":"Arr2P1", "
       00450     A3A89785 7F7A7FF1 817F6B40 7FA58193   - type":"1a", "val
       00460     A4857F7A 7F7FD06B 25404040 40404040   - ue":""Ã¥,.       
       00470     40404040 40C07F95 8194857F 7A7FC199   -      ä"name":"Ar
       00480     99F2D7F2 7F6B407F A3A89785 7F7A7FF3   - r2P2", "type":"3
       00490     F0817F6B 407FA581 93A4857F 7A7F7FD0   - 0a", "value":""Ã¥
       004A0     6B254040 40404040 40404040 4040C07F   - ,.            ä"
       004B0     95819485 7F7A7FC1 9999F2D7 F37F6B40   - name":"Arr2P3", 
       004C0     7FA3A897 857F7A7F F4817F6B 407FA581   - "type":"4a", "va
       004D0     93A4857F 7A7F7FD0 6B254040 40404040   - lue":""Ã¥,.      
       004E0     40404040 4040C07F 95819485 7F7A7FC1   -       ä"name":"A
       004F0     9999F2D7 F47F6B40 7FA3A897 857F7A7F   - rr2P4", "type":"
       00500     F1F8817F 6B407FA5 8193A485 7F7A7F7F   - 18a", "value":""
       00510     D06B2540 40404040 40404040 404040C0   - å,.            ä
       00520     7F958194 857F7A7F C19999F2 D7F57F6B   - "name":"Arr2P5",
       00530     407FA3A8 97857F7A 7FF1F0F0 817F6B40   -  "type":"100a", 
       00540     7FA58193 A4857F7A 7F7FD025 40404040   - "value":""Ã¥.    
       00550     40404040 BBD02540 404040BB D06B2540   -     |Ã¥.    |Ã¥,. 
       00560     404040C0 7FA27F7A 40C07F95 8194857F   -    ä"s": ä"name"
       00570     7A7FD781 9994F1F1 7F6B407F A3A89785   - :"Parm11", "type
       00580     7F7A7FF3 F0817F6B 407FA581 93A4857F   - ":"30a", "value"
       00590     7A7F7FD0 D025BBD0 00000000 00000000   - :""åå.|å........
    
    EVAL outData:x 1560                                                  
       00000     C07FA283 998997A3 7F7ABAC0 7F978794   - ä"script":¬ä"pgm
       00010     7F7ABA7F C8C1D4C5 D3C1F0F3 7F6B7FC4   - ":¬"HAMELA03","D
       00020     C2F2D1E2 D6D57F6B C07FD781 9994F17F   - B2JSON",ä"Parm1"
       00030     7AC0D0D0 6BC07FD7 819994F2 7F7A7F81   - :äåå,ä"Parm2":"a
       00040     7FD06BC0 7FD78199 94F37F7A C0D0D06B   - "å,ä"Parm3":äåå,
       00050     C07FD781 9994F47F 7AC0D0D0 6BC07FC1   - ä"Parm4":äåå,ä"A
       00060     9999F1C3 96A495A3 7F7AF1D0 6BC07FC1   - rr1Count":1å,ä"A
       00070     9999F17F 7ABABAC0 7FC19999 F1D7F17F   - rr1":¬¬ä"Arr1P1"
       00080     7AC0D0D0 6BC07FC1 9999F1D7 F27F7AC0   - :äåå,ä"Arr1P2":ä
       00090     D0D06BC0 7FC19999 F1D7F37F 7AC0D0D0   - åå,ä"Arr1P3":äåå
       000A0     6BC07FC1 9999F1D7 F47F7AF0 4BF0D0BB   - ,ä"Arr1P4":0.0å|
       000B0     6BBAC07F C19999F1 D7F17F7A C0D0D06B   - ,¬ä"Arr1P1":äåå,
       000C0     C07FC199 99F1D7F2 7F7AC0D0 D06BC07F   - ä"Arr1P2":äåå,ä"
       000D0     C19999F1 D7F37F7A C0D0D06B C07FC199   - Arr1P3":äåå,ä"Ar
       000E0     99F1D7F4 7F7AF04B F0D0BB6B BAC07FC1   - r1P4":0.0å|,¬ä"A
       000F0     9999F1D7 F17F7AC0 D0D06BC0 7FC19999   - rr1P1":äåå,ä"Arr
       00100     F1D7F27F 7AC0D0D0 6BC07FC1 9999F1D7   - 1P2":äåå,ä"Arr1P
       00110     F37F7AC0 D0D06BC0 7FC19999 F1D7F47F   - 3":äåå,ä"Arr1P4"
       00120     7AF04BF0 D0BB6BBA C07FC199 99F1D7F1   - :0.0å|,¬ä"Arr1P1
       00130     7F7AC0D0 D06BC07F C19999F1 D7F27F7A   - ":äåå,ä"Arr1P2":
       00140     C0D0D06B C07FC199 99F1D7F3 7F7AC0D0   - äåå,ä"Arr1P3":äå
       00150     D06BC07F C19999F1 D7F47F7A F04BF0D0   - å,ä"Arr1P4":0.0å
       00160     BB6BBAC0 7FC19999 F1D7F17F 7AC0D0D0   - |,¬ä"Arr1P1":äåå
       00170     6BC07FC1 9999F1D7 F27F7AC0 D0D06BC0   - ,ä"Arr1P2":äåå,ä
       00180     7FC19999 F1D7F37F 7AC0D0D0 6BC07FC1   - "Arr1P3":äåå,ä"A
       00190     9999F1D7 F47F7AF0 4BF0D0BB 6BBAC07F   - rr1P4":0.0å|,¬ä"
       001A0     C19999F1 D7F17F7A C0D0D06B C07FC199   - Arr1P1":äåå,ä"Ar
       001B0     99F1D7F2 7F7AC0D0 D06BC07F C19999F1   - r1P2":äåå,ä"Arr1
       001C0     D7F37F7A C0D0D06B C07FC199 99F1D7F4   - P3":äåå,ä"Arr1P4
       001D0     7F7AF04B F0D0BB6B BAC07FC1 9999F1D7   - ":0.0å|,¬ä"Arr1P
       001E0     F17F7AC0 D0D06BC0 7FC19999 F1D7F27F   - 1":äåå,ä"Arr1P2"
       001F0     7AC0D0D0 6BC07FC1 9999F1D7 F37F7AC0   - :äåå,ä"Arr1P3":ä
       00200     D0D06BC0 7FC19999 F1D7F47F 7AF04BF0   - åå,ä"Arr1P4":0.0
       00210     D0BB6BBA C07FC199 99F1D7F1 7F7AC0D0   - å|,¬ä"Arr1P1":äå
       00220     D06BC07F C19999F1 D7F27F7A C0D0D06B   - å,ä"Arr1P2":äåå,
       00230     C07FC199 99F1D7F3 7F7AC0D0 D06BC07F   - ä"Arr1P3":äåå,ä"
       00240     C19999F1 D7F47F7A F04BF0D0 BB6BBAC0   - Arr1P4":0.0å|,¬ä
       00250     7FC19999 F1D7F17F 7AC0D0D0 6BC07FC1   - "Arr1P1":äåå,ä"A
       00260     9999F1D7 F27F7AC0 D0D06BC0 7FC19999   - rr1P2":äåå,ä"Arr
       00270     F1D7F37F 7AC0D0D0 6BC07FC1 9999F1D7   - 1P3":äåå,ä"Arr1P
       00280     F47F7AF0 4BF0D0BB 6BBAC07F C19999F1   - 4":0.0å|,¬ä"Arr1
       00290     D7F17F7A C0D0D06B C07FC199 99F1D7F2   - P1":äåå,ä"Arr1P2
       002A0     7F7AC0D0 D06BC07F C19999F1 D7F37F7A   - ":äåå,ä"Arr1P3":
       002B0     C0D0D06B C07FC199 99F1D7F4 7F7AF04B   - äåå,ä"Arr1P4":0.
       002C0     F0D0BBBB D06BC07F D7819994 F57F7AC0   - 0å||å,ä"Parm5":ä
       002D0     D0D06BC0 7FD78199 94F67F7A C0D0D06B   - åå,ä"Parm6":äåå,
       002E0     C07FD781 9994F77F 7AC0D0D0 6BC07FD7   - ä"Parm7":äåå,ä"P
       002F0     819994F8 7F7AC0D0 D06BC07F D7819994   - arm8":äåå,ä"Parm
       00300     F97F7AF0 4BF0D06B C07FD781 9994F1F0   - 9":0.0å,ä"Parm10
       00310     7F7AF04B F0D06BC0 7FC19999 F2C396A4   - ":0.0å,ä"Arr2Cou
       00320     95A37F7A F3D06BC0 7FC19999 F27F7ABA   - nt":3å,ä"Arr2":¬
       00330     BAC07FC1 9999F2D7 F17F7AC0 D0D06BC0   - ¬ä"Arr2P1":äåå,ä
       00340     7FC19999 F2D7F27F 7AC0D0D0 6BC07FC1   - "Arr2P2":äåå,ä"A
       00350     9999F2D7 F37F7AC0 D0D06BC0 7FC19999   - rr2P3":äåå,ä"Arr
       00360     F2D7F47F 7AC0D0D0 6BC07FC1 9999F2D7   - 2P4":äåå,ä"Arr2P
       00370     F57F7AC0 D0D0BB6B BAC07FC1 9999F2D7   - 5":äåå|,¬ä"Arr2P
       00380     F17F7AC0 D0D06BC0 7FC19999 F2D7F27F   - 1":äåå,ä"Arr2P2"
       00390     7AC0D0D0 6BC07FC1 9999F2D7 F37F7AC0   - :äåå,ä"Arr2P3":ä
       003A0     D0D06BC0 7FC19999 F2D7F47F 7AC0D0D0   - åå,ä"Arr2P4":äåå
       003B0     6BC07FC1 9999F2D7 F57F7AC0 D0D0BB6B   - ,ä"Arr2P5":äåå|,
       003C0     BAC07FC1 9999F2D7 F17F7AC0 D0D06BC0   - ¬ä"Arr2P1":äåå,ä
       003D0     7FC19999 F2D7F27F 7AC0D0D0 6BC07FC1   - "Arr2P2":äåå,ä"A
       003E0     9999F2D7 F37F7AC0 D0D06BC0 7FC19999   - rr2P3":äåå,ä"Arr
       003F0     F2D7F47F 7AC0D0D0 6BC07FC1 9999F2D7   - 2P4":äåå,ä"Arr2P
       00400     F57F7AC0 D0D0BB6B BAC07FC1 9999F2D7   - 5":äåå|,¬ä"Arr2P
       00410     F17F7AC0 D0D06BC0 7FC19999 F2D7F27F   - 1":äåå,ä"Arr2P2"
       00420     7AC0D0D0 6BC07FC1 9999F2D7 F37F7AC0   - :äåå,ä"Arr2P3":ä
       00430     D0D06BC0 7FC19999 F2D7F47F 7AC0D0D0   - åå,ä"Arr2P4":äåå
       00440     6BC07FC1 9999F2D7 F57F7AC0 D0D0BB6B   - ,ä"Arr2P5":äåå|,
       00450     BAC07FC1 9999F2D7 F17F7AC0 D0D06BC0   - ¬ä"Arr2P1":äåå,ä
       00460     7FC19999 F2D7F27F 7AC0D0D0 6BC07FC1   - "Arr2P2":äåå,ä"A
       00470     9999F2D7 F37F7AC0 D0D06BC0 7FC19999   - rr2P3":äåå,ä"Arr
       00480     F2D7F47F 7AC0D0D0 6BC07FC1 9999F2D7   - 2P4":äåå,ä"Arr2P
       00490     F57F7AC0 D0D0BB6B BAC07FC1 9999F2D7   - 5":äåå|,¬ä"Arr2P
       004A0     F17F7AC0 D0D06BC0 7FC19999 F2D7F27F   - 1":äåå,ä"Arr2P2"
       004B0     7AC0D0D0 6BC07FC1 9999F2D7 F37F7AC0   - :äåå,ä"Arr2P3":ä
       004C0     D0D06BC0 7FC19999 F2D7F47F 7AC0D0D0   - åå,ä"Arr2P4":äåå
       004D0     6BC07FC1 9999F2D7 F57F7AC0 D0D0BB6B   - ,ä"Arr2P5":äåå|,
       004E0     BAC07FC1 9999F2D7 F17F7AC0 D0D06BC0   - ¬ä"Arr2P1":äåå,ä
       004F0     7FC19999 F2D7F27F 7AC0D0D0 6BC07FC1   - "Arr2P2":äåå,ä"A
       00500     9999F2D7 F37F7AC0 D0D06BC0 7FC19999   - rr2P3":äåå,ä"Arr
       00510     F2D7F47F 7AC0D0D0 6BC07FC1 9999F2D7   - 2P4":äåå,ä"Arr2P
       00520     F57F7AC0 D0D0BB6B BAC07FC1 9999F2D7   - 5":äåå|,¬ä"Arr2P
       00530     F17F7AC0 D0D06BC0 7FC19999 F2D7F27F   - 1":äåå,ä"Arr2P2"
       00540     7AC0D0D0 6BC07FC1 9999F2D7 F37F7AC0   - :äåå,ä"Arr2P3":ä
       00550     D0D06BC0 7FC19999 F2D7F47F 7AC0D0D0   - åå,ä"Arr2P4":äåå
       00560     6BC07FC1 9999F2D7 F57F7AC0 D0D0BB6B   - ,ä"Arr2P5":äåå|,
       00570     BAC07FC1 9999F2D7 F17F7AC0 D0D06BC0   - ¬ä"Arr2P1":äåå,ä
       00580     7FC19999 F2D7F27F 7AC0D0D0 6BC07FC1   - "Arr2P2":äåå,ä"A
       00590     9999F2D7 F37F7AC0 D0D06BC0 7FC19999   - rr2P3":äåå,ä"Arr
       005A0     F2D7F47F 7AC0D0D0 6BC07FC1 9999F2D7   - 2P4":äåå,ä"Arr2P
       005B0     F57F7AC0 D0D0BB6B BAC07FC1 9999F2D7   - 5":äåå|,¬ä"Arr2P
       005C0     F17F7AC0 D0D06BC0 7FC19999 F2D7F27F   - 1":äåå,ä"Arr2P2"
       005D0     7AC0D0D0 6BC07FC1 9999F2D7 F37F7AC0   - :äåå,ä"Arr2P3":ä
       005E0     D0D06BC0 7FC19999 F2D7F47F 7AC0D0D0   - åå,ä"Arr2P4":äåå
       005F0     6BC07FC1 9999F2D7 F57F7AC0 D0D0BBBB   - ,ä"Arr2P5":äåå||
       00600     D06BC07F D7819994 F1F17F7A 7F817FD0   - å,ä"Parm11":"a"å
       00610     BBD0BBD0 00000000 ........ ........   - |Ã¥|Ã¥............
    

    I'll examine those more throughly later, but feel free to get at them 😃

    edit. Okay, so only difference between those two versions is that 'ä' -> 'a' char.

  14. Former user Account Deleted

    But I did some quick debugging. It crashes on the odbc_result() line and only when output has 'special' characters in them.

    More precisely, your specific Linux machine using php odbc is crashing on odbc_result() line. On the other hand, my Linux php odbc appears to work ok (no crash).

    My machine is ok (no crash).

    [adc@oc7083008330 tests_php]$ php test3000_sql400json_odbc.php ../tests_c/j0180_pgm_hamela03-ds-rpg-occurs
    
    ====================================
    ../tests_c/j0180_pgm_hamela03-ds-rpg-occurs
    Input:
    string(1435) "{"pgm":[
        {"name":"HAMELA03",  "lib":"DB2JSON"},
        {"s": [
            {"name":"Parm1", "type":"1a", "value":""},
            {"name":"Parm2", "type":"18a", "value":"ä"},
            {"name":"Parm3", "type":"2a", "value":""},
            {"name":"Parm4", "type":"10a", "value":""},
            {"name":"Arr1Count", "type":"3s0", "value":0}
        ]},
        {"ds": [{"name":"Arr1", "dim":10},
            {"s":[
                {"name":"Arr1P1", "type":"7a", "value":""},
                {"name":"Arr1P2", "type":"132a", "value":""},
                {"name":"Arr1P3", "type":"30a", "value":""},
                {"name":"Arr1P4", "type":"1s0", "value":0}
            ]}
        ]},
        {"s": [
            {"name":"Parm5", "type":"1a", "value":""},
            {"name":"Parm6", "type":"4a", "value":""},
            {"name":"Parm7", "type":"18a", "value":""},
            {"name":"Parm8", "type":"100a", "value":""},
            {"name":"Parm9", "type":"3s0", "value":0},
            {"name":"Parm10", "type":"3s0", "value":0}
        ]},
        {"s": {"name":"Arr2Count", "type":"5s0", "value":3}},
        {"ds": [{"name":"Arr2", "dim":10},
            {"s":[
                {"name":"Arr2P1", "type":"1a", "value":""},
                {"name":"Arr2P2", "type":"30a", "value":""},
                {"name":"Arr2P3", "type":"4a", "value":""},
                {"name":"Arr2P4", "type":"18a", "value":""},
                {"name":"Arr2P5", "type":"100a", "value":""}
            ]}
        ]},
        {"s": {"name":"Parm11", "type":"30a", "value":""}}
    ]}
    
    "
    string(3002) "{"script":[{"pgm":["HAMELA03","DB2JSON",
    {"Parm1":{}},{"Parm2":"ä"},{"Parm3":{}},{"Parm4":{}},
    {"Arr1Count":1},{"Arr1":[[
    {"Arr1P1":{}},{"Arr1P2":{}},{"Arr1P3":{}},{"Arr1P4":0.0}
    ]]},
    {"Parm5":{}},{"Parm6":{}},{"Parm7":{}},
    {"Parm8":{}},{"Parm9":0.0},{"Parm10":0.0},
    {"Arr2Count":3},{"Arr2":[[
    {"Arr2P1":{}},{"Arr2P2":{}},{"Arr2P3":{}},
    {"Arr2P4":{}},{"Arr2P5":{}}]]},{"Parm11":"ä"}
    ]}]}"
    success (0)
    

    Gee Batman, perhaps Mr. Linux is our villain?? Your php odbc crash observation indicates problem with your installed version of 'something'. That is, any 'wild' character should never cause php odbc to segfault (die). Wherein, 'wild' character in this context means messed conversion of any given character. Linux php odbc should not die because of a 'goofy' character in a result set (silly odbc). Yes?

    my Linux machine

    Most obvious answer is you need to update your Linux php + odbc, or, perhaps Linux odbc driver (client access?).

    [adc@oc7083008330 tests_php]$ php --version
    PHP 7.1.4 (cli) (built: Apr 14 2017 15:59:17) ( NTS )
    Copyright (c) 1997-2017 The PHP Group
    Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
    
    [adc@oc7083008330 tests_php]$ php --re odbc
    Extension [ <persistent> extension #10 odbc version 7.1.4 ] {
    
    [adc@oc7083008330 tests_php]$ odbcinst -j
    unixODBC 2.2.14
    DRIVERS............: /etc/odbcinst.ini
    SYSTEM DATA SOURCES: /etc/odbc.ini
    FILE DATA SOURCES..: /etc/ODBCDataSources
    USER DATA SOURCES..: /home/adc/.odbc.ini
    SQLULEN Size.......: 8
    SQLLEN Size........: 8
    SQLSETPOSIROW Size.: 8
    
    
    $ /opt/ibm/iaccess/bin/cwbmedic
    $ tar xf cwbmedic-timestamp-stuff.tgz
    $ gedit cwbmedic.20171108_10.37.02.out &
    
    =========================== IBM-IACCESS ============================
    PKG
    --------------------------------------------------------------------
    Name        : ibm-iaccess                  Relocations: (not relocatable)
    Version     : 1.1.0.8                           Vendor: IBM
    Release     : 1.0                           Build Date: Wed 31 May 2017 12:38:50 PM CDT
    Install Date: Tue 31 Oct 2017 02:10:56 PM CDT      Build Host: lcomp09b
    Group       : Productivity/Databases/Clients   Source RPM: ibm-iaccess-1.1.0.8-1.0.src.rpm
    Size        : 7584618                          License: IPLA
    Signature   : (none)
    URL         : http://www-03.ibm.com/systems/power/software/i/access/solutions.html
    Summary     : IBM i Access Client Solutions - Linux Application Package
    Description :
    IBM i Access Client Solutions - Linux Application Package for an enhanced ODBC driver.
    For more information, see:
      http://www.ibm.com/systems/power/software/i/access/solutions.html
    
    5733-XJ1
    (C) Copyright IBM Corporation 2001, 2017
    All rights reserved.
    Licensed Materials Property of IBM
    US Government Users Restricted Rights -
    Use, duplication or disclosure restricted by
    GSA ADP Schedule Contract with IBM Corp.
    

    mmm ... gets crazy from here

    Sane and rational. Update Linux version(s) seems correct next step.

    However, not sure what next step would be used to pacify Linux whining baby php odbc. I mean, what can we/server do about a bad character as 'conversion' occurs via natural odbc client/server DB2 clob interaction?? Aka, we/db2sock are not really doing anything on path db2projr(clob). Just a clob and a result set. How do we/server db2sock know what a bad character looks like???

    I recall we added a goofy end of line delimiter for odbc result set in xmlservice (</hack>). Not sure that would fix this php odbc problem. Especially as my Linux machine is working 'as is'. Mmmm ... this is getting ugly (on your Linux machine).

    server 65535???

    Perhaps your whole Linux mess is your IBM i server default ccsid 65535 (hex/no convert)??? I thought you mentioned changed profile to some other ccsid, seems logical action. Well, unless iaccess odbc picking some other wild ccsid when faced with machine default ccsid 65353. I don't know enough about odbc 'hacks' in ccsid 65535 area (not sure i even want to look at odbc ccsid sausage being made ... yuck).

    green screen eval (hex dump)

    BTW -- Your green screen eval dumps nears useless (to my eyes). As you can see, right side character 'interpretation' of hex data, full on party of green screen influenced by job ccsid, profile ccsid, machine ccsid scope order precedence (i recall some application ccsid in mix, maybe 37). As said before, variant EBCDIC characters be one horrible thing for green screen debuggers.

    EVAL outData:x 1560                                                  
       00000     C07FA283 998997A3 7F7ABAC0 7F978794   - ä"script":¬ä"pgm
       00010     7F7ABA7F C8C1D4C5 D3C1F0F3 7F6B7FC4   - ":¬"HAMELA03","D
    

    Maybe stop posting green screen evals, i can't see how this will help. That is, our last integrated fix for variant characters like 0xCO is correctly recognized as '{' in the json parser despite goof ball 'ä' we see on green screen eval. If this were not so, all the test cases would fail, not just hamela03. Aka, green screen debugger is almost useless with json due to variant EBCDIC characters (double Uf Da with a 'ä' cherry on top ... or ... is that '{' cherry on top) .

  15. Former user Account Deleted

    reminder your Linux laptop php odbc segfault

    I believe db2sock project server side is working ok (db2procjr). I suggest your specific Linux machine is the problem, possibly out of date php, odbc, etc. My Linux machine is working ok both php odbc and php ibm_db2. Therefore, I am not working on anything for your Linux segfault as this seems to be your specific laptop problem.

    However, I continue to add features MAY help with said assumed 'out of date' Linux php odbc laptop. You should update to minimum db2sock 1.0.9-sg9 to get these features.

    Are we still working this issue? Done?

  16. Teemu Halmela reporter

    Still working on it, progress has just been slow on my end.

    possibly out of date php, odbc,

    My versions are a little bit older, but not that much.

    $ php --version
    PHP 7.0.22-0ubuntu0.17.04.1 (cli) (built: Aug  8 2017 22:03:30) ( NTS )
    Copyright (c) 1997-2017 The PHP Group
    Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
        with Zend OPcache v7.0.22-0ubuntu0.17.04.1, Copyright (c) 1999-2017, by Zend Technologies
    
    $ php --re odbc
    Extension [ <persistent> extension #27 odbc version 7.0.22-0ubuntu0.17.04.1 ]
    
    $ odbcinst -j
    unixODBC 2.3.4
    DRIVERS............: /etc/odbcinst.ini
    SYSTEM DATA SOURCES: /etc/odbc.ini
    FILE DATA SOURCES..: /etc/ODBCDataSources
    USER DATA SOURCES..: /home/newuser/.odbc.ini
    SQLULEN Size.......: 8
    SQLLEN Size........: 8
    SQLSETPOSIROW Size.: 8
    
    =========================== IBM-IACCESS ============================
    PKG
    --------------------------------------------------------------------
    Desired=Unknown/Install/Remove/Purge/Hold
    | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
    |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
    ||/ Name           Version      Architecture Description
    +++-==============-============-============-=================================
    ii  ibm-iaccess    1.1.0.7-1.0  amd64        IBM i Access Client Solutions
    

    My IBM-IACCESS doesn't show nearly as much data as yours. Don't know what could be with it. It is installed from this package IBM_i_Access_Client_Solutions_-_Linux_AP_LCD8_2012_07/x86_64/ibm-iaccess-1.1.0.7-1.0.amd64.deb.
    Still this same driver and PHP works correctly with XMLSERVICE so those shouldn't be the problem.

    I also returned briefly to my linux "port". It seems my Linux and IBM have different endianness so that was introducing some problems. But now 'Hello world' at least gets to the RPG program, it just won't bring back the correct result. Maybe those INOUT parameters aren't working through this either 🤔

    I am not working on anything for your Linux segfault

    Yeah, this really shouldn't be that high of priority. It is really nice thing to have, it improves developing workflow, but time could also be used on something more important.

  17. Former user Account Deleted

    Are we done with this issue?

    Aka, we have proven that Remote (laptop) calling via ODBC generally works. There are ODBC driver issues (php odbc pecl), but not seem to be db2sock problems. Aka, db2 connect ibm_db2 over DRDA (license driver), does not have same issues as ODBC (free driver)... so ... not sure what more you expect.

    We have a running discussion in the 'Get Involved' issue about doing something better than remote ODBCosaurus (maybe with json REST). So, I don't think we need duplicate that discussion this issue.

    Are we done with this issue?

  18. Teemu Halmela reporter

    I had an idea to try to make call through ODBC with C instead of PHP and that at least worked without crashing. It still doesn't return äö-characters, but that is probably something to do with our machine. So for developing purposes current solution works fine.

  19. Former user Account Deleted

    Great. You may open new issue any time should need arise. Thanks for your help and patience with Open Source.

  20. Log in to comment