To:
roy.hann@rationalcommerce.com (
roy.hann@rationalcommerce.com)
Copy:
info-ingres@lists.planetingres.org (
info-ingres@lists.planetingres.org)
SGkgQWRyaWFuLA0KDQpJIGxpa2UgdGhlIHN1Z2dlc3Rpb24gb24gc2hpcCBhbmQgYWxsb3cgdGhl IHVzZXJzIHRvIGRlYnVnLg0KDQpUaGUgbmV3ICgxMS4yKSBVREZzIGF2YWlsYWJsZSB3aXRoIENS RUFURSBGVU5DVElPTiBhcmUgc3dlZXQgYnV0IHZlcnkgbGltaXRlZCBjb21wYXJlZCB0byBPTUUg ZnVuY3Rpb25zLiBTcGVjaWZpY2FsbHk6DQoNCjEuICAgICAgIFRoZXkgY2Fubm90IHVzZSBDLCBq YXZhU2NyaXB0LCBQZXJsLg0KSaGvdmUgYXNrZWQgZm9yIFBlcmwgYW5kIEMgdG8gYmUgaW5jbHVk ZWQgaW4gYW55IGZ1dHVyZSBkZXZlbG9wbWVudC4NCg0KMi4gICAgICAgVGhleSBhcmUgbm90IGlu c3RhbGxhdGlvbiB3aWRlLg0KDQpUaGV5IGFyZSBvbmx5IGF2YWlsYWJsZSB0byB0aGUgZGF0YWJh c2UgaW4gd2hpY2ggdGhleSBhcmUgZGVmaW5lZC4NCg0KMy4gICAgICAgRnVydGhlcm1vcmUsIHRo ZXkgYXJlIG5vdCBhdmFpbGFibGUgdG8gYWxsIHVzZXJzLCBvbmx5IHRoZSB1c2VyIHdobyBjcmVh dGVkIHRoZW0uDQoNClRoZXJlIGlzIG5vIGdyYW50IGV4ZWN1dGUgb24gZnVuY3Rpb24gc3RhdGVt ZW50IGF2YWlsYWJsZS4NCg0KV2hlcmUgdGhlIG5ldyBVREZzIGNvbWUgaW50byB0aGVpciBvd24g aXMgZm9yIGxpdHRsZSB0aGluZ3MuDQpFZy4gY2F0IGh5cGVyYm9saWMuc3FsDQpccg0Kc2V0IGF1 dG9jb21taXQgb247DQpccFxnDQpDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBjb3NoKHggRkxP QVQ4KQ0KUkVUVVJOKEZMT0FUOCkgQVMNCkJFR0lODQogICAgUkVUVVJOIChFWFAoeCkgKyBFWFAo LXgpKSAvIDI7DQpFTkQ7DQpccFxnDQpDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBzaW5oKHgg RkxPQVQ4KQ0KUkVUVVJOKEZMT0FUOCkgQVMNCkJFR0lODQogICAgUkVUVVJOIChFWFAoeCkgLSBF WFAoLXgpKSAvIDI7DQpFTkQ7DQpccFxnDQpDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiB0YW5o KHggRkxPQVQ4KQ0KUkVUVVJOKEZMT0FUOCkgQVMNCkJFR0lODQogICAgUkVUVVJOIHNpbmgoeCkg LyBjb3NoKHgpOw0KRU5EOw0KXHBcZw0KDQpNYXJ0eQ0KDQpGcm9tOiBBZHJpYW4gV2lsbGlhbXNv biA8YWRyaWFuLndpbGxpYW1zb25AcmF0aW9uYWxjb21tZXJjZS5jb20+DQpTZW50OiAxMSBBdWd1 c3QgMjAyMSAxNToxMQ0KVG86IE1hcnRpbiBCb3dlcyA8bWFydGluLmJvd2VzQG5kcGgub3guYWMu dWs+OyByb3kuaGFubkByYXRpb25hbGNvbW1lcmNlLmNvbQ0KU3ViamVjdDogUkU6IFtJbmZvLWlu Z3Jlc10gQ29udmVydCBoZXggc3RyaW5nIHRvIGFuIGludGVnZXINCg0KaHR0cHM6Ly9kb2NzLmFj dGlhbi5jb20vYWN0aWFueC8xMS4yL2luZGV4Lmh0bWwjcGFnZS9SZWxTdW0lMkZTY2FsYXJfVXNl ci1kZWZpbmVkX0Z1bmN0aW9uc18oVURGcykuaHRtJTIzd3djb25uZWN0X2hlYWRlcg0KDQpVREYg bm90IE9NRaGmDQoNCkZyb206IEFkcmlhbiBXaWxsaWFtc29uIDxhZHJpYW4ud2lsbGlhbXNvbkBy YXRpb25hbGNvbW1lcmNlLmNvbTxtYWlsdG86YWRyaWFuLndpbGxpYW1zb25AcmF0aW9uYWxjb21t ZXJjZS5jb20+Pg0KU2VudDogMTEgQXVndXN0IDIwMjEgMTU6MDcNClRvOiAnTWFydGluIEJvd2Vz JyA8bWFydGluLmJvd2VzQG5kcGgub3guYWMudWs8bWFpbHRvOm1hcnRpbi5ib3dlc0BuZHBoLm94 LmFjLnVrPj47ICdyb3kuaGFubkByYXRpb25hbGNvbW1lcmNlLmNvbScgPHJveS5oYW5uQHJhdGlv bmFsY29tbWVyY2UuY29tPG1haWx0bzpyb3kuaGFubkByYXRpb25hbGNvbW1lcmNlLmNvbT4+DQpT dWJqZWN0OiBSRTogW0luZm8taW5ncmVzXSBDb252ZXJ0IGhleCBzdHJpbmcgdG8gYW4gaW50ZWdl cg0KDQqoqiAgYWZ0ZXIgY29tcGlsaW5nIHdpdGggbm8gZXJyb3JzIEmhr20gbm90IHRvbyBzdXJl IHdoYXQgbW9yZSBJIGhhdmUgdG8gZG8uDQoNClNoaXAgaXQgYW5kIGxldCB0aGUgY3VzdG9tZXJz IGZpbmQgdGhlIGJ1Z3M/DQoNClRlIEhlLg0KDQpHb29kIHdvcmsgTWFydHkuDQoNCkRpZCBJIHJl YWQgc29tZXdoZXJlIHlvdSBjYW4gZXh0ZW5kIEluZ3JlcyB1c2luZyBQZXJsIG9yIEphdmEgb3Ig YmFzaWNhbGx5IHNvbWV0aGluZyBlbHNlIG90aGVyIHRoYW4goa5Doa8/DQoNCg0KDQpGcm9tOiBp bmZvLWluZ3Jlcy1ib3VuY2VzQGxpc3RzLnBsYW5ldGluZ3Jlcy5vcmc8bWFpbHRvOmluZm8taW5n cmVzLWJvdW5jZXNAbGlzdHMucGxhbmV0aW5ncmVzLm9yZz4gPGluZm8taW5ncmVzLWJvdW5jZXNA bGlzdHMucGxhbmV0aW5ncmVzLm9yZzxtYWlsdG86aW5mby1pbmdyZXMtYm91bmNlc0BsaXN0cy5w bGFuZXRpbmdyZXMub3JnPj4gT24gQmVoYWxmIE9mIE1hcnRpbiBCb3dlcw0KU2VudDogMTEgQXVn dXN0IDIwMjEgMTQ6MjENClRvOiBpbmZvLWluZ3Jlc0BsaXN0cy5wbGFuZXRpbmdyZXMub3JnPG1h aWx0bzppbmZvLWluZ3Jlc0BsaXN0cy5wbGFuZXRpbmdyZXMub3JnPg0KU3ViamVjdDogW0luZm8t aW5ncmVzXSBDb252ZXJ0IGhleCBzdHJpbmcgdG8gYW4gaW50ZWdlcg0KDQpIaSBBbGwsDQoNClRo ZXJlIGhhcyBnb3QgdG8gYmUgYW4gZWFzaWVyICB3YXmhpi4NCg0KR2l2ZW4gYSBzdHJpbmcgd2hp Y2ggcmVwcmVzZW50cyBhIGhleCB2YWx1ZSwgY29udmVydCBpdCB0byBhbiBpbnRlZ2VyIG9mIGEg Z2l2ZW4gc2l6ZS4NCg0KVGhlIG9ubHkgc29sdXRpb24gSaGvdmUgY29tZSB1cCB3aXRoIGlzIGJ5 IG1ha2luZyBhbiBPTUUgZnVuY3Rpb24uIFNlZSBhdHRhY2hlZC4NCg0KSGVyZSBpcyBob3cgSSB3 b3VsZCBkZXNjcmliZSB0aGF0IGZ1bmN0aW9uoaYNCmhleDJpbnQoaGV4U3RyaW5nLCBpbnRlZ2Vy U2l6ZSkNCkNvbnZlcnQgdGhlIGluZGljYXRlZCBoZXggc3RyaW5nIGludG8gYSBzaWduZWQgaW50 ZWdlciBvZiB0aGUgZ2l2ZW4gc2l6ZS4gQ2FzZSBpcyBpZ25vcmVkLg0KDQpUd2+hr3MgY29tcGxl bWVudCBpcyByZXNwZWN0ZWQgYW5kIGhlbmNlIHdoZW4gY29udmVydGluZyB0byBpbnRlZ2VyMSB0 aGUgc3RyaW5nIKGuRkahryBiZWNvbWVzIC0xLiBIb3dldmVyIHRoZSBzYW1lIHN0cmluZyBjb252 ZXJ0ZWQgdG8gaW50ZWdlcjIgYmVjb21lcyAyNTUuDQoNClRoZSBoZXggc3RyaW5nIG1heSBiZSBw cmVmaXhlZCB3aXRoIKGuMHihrywgoa4rMHihrywgb3Igoa4tMHihry4gQnV0IGluIHRoZSBjYXNl IG9mIKGuLTB4oa8gdGhlcmUgaXMgdGhlIHBvc3NpYmlsaXR5IG9mIGEgZG91YmxlIG5lZ2F0aXZl IGlmIHRoZSBzdHJpbmcgY29udmVydHMgdG8gYSBuZWdhdGl2ZSBpbnRlZ2VyLg0KDQpBbmQgaGVy ZSBpcyBzb21lIHNhbXBsZSBvdXRwdXShpg0Kc2VsZWN0IGhleDJpbnQoJ0ZGRkQnLCA4KVxnDQqm o6ahpqGmoaahpqGmoaahpqGmoaahpqGmoaahpqGmoaahpqGmoaahpqGmoaahpqQNCqaiY29sMSAg ICAgICAgICAgICAgICAgIKaiDQqmp6ahpqGmoaahpqGmoaahpqGmoaahpqGmoaahpqGmoaahpqGm oaahpqGmoaahpqkNCqaiICAgICAgICAgICAgICAgICA2NTUzM6aiDQqmpqahpqGmoaahpqGmoaah pqGmoaahpqGmoaahpqGmoaahpqGmoaahpqGmoaahpqUNCigxIHJvdykNCg0Kc2VsZWN0IGhleDJp bnQoJ0ZGRkQnLCAyMilcZw0KRV9PTUUwMDEgaGV4MmludCgpOiBJbnZhbGlkIHNpemUgJzIyJyBz cGVjaWZpZWQuIEl0IG11c3QgYmUgb25lIG9mIDEsIDIsDQogICAgNCwgOA0KICAgIChUdWUgQXVn IDEwIDE0OjQ3OjU4IDIwMjEpDQoNCnNlbGVjdCBoZXgyaW50KCdGRkZEJywgMilcZw0KDQqmo6ah pqGmoaahpqGmoaakDQqmomNvbDEgIKaiDQqmp6ahpqGmoaahpqGmoaapDQqmoiAgICAtM6aiDQqm pqahpqGmoaahpqGmoaalDQooMSByb3cpDQoNCnNlbGVjdCBoZXgyaW50KCdnYXJiYWdlJywgOClc Zw0KRXhlY3V0aW5nIC4gLiAuDQoNCkVfT01FMDAxIGhleDJpbnQoKTogTm9uIGhleCBjaGFyYWN0 ZXIgJ2cnIGZvdW5kIGluIHN0cmluZy4NCiAgICAoV2VkIEF1ZyAxMSAxNDowODoyOSAyMDIxKQ0K DQpTbyB0aGUgcXVlc3Rpb25zIGFyZToNCg0KICAxLiAgQ2FuIGFueW9uZSBkbyB0aGlzIGluIHNp bXBsZSBTUUw/IElmIHNvLCBob3c/DQogIDIuICBDb3VsZCBwZW9wbGUgaGF2ZSBhIHF1aWNrIGxv b2sgb3ZlciB0aGUgQyBjb2RlIGFuZCBnaXZlIG1lIHNvbWUgZmVlZGJhY2sgcGxlYXNlLiBJoa9t IG5vdCBhIEMgY29kZXIgYW5kIGFmdGVyIGNvbXBpbGluZyB3aXRoIG5vIGVycm9ycyBJoa9tIG5v dCB0b28gc3VyZSB3aGF0IG1vcmUgSSBoYXZlIHRvIGRvLg0KDQpUaGFua3MsDQoNCk1hcnR5DQo=
<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="
http://schemas.microsoft.com/office/2004/12/omml" xmlns="
http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ks_c_5601-1987"> <meta name="Generator" content="Microsoft Word 15 (filtered medium)"> <style><!--
/* Font Definitions */
@font-face
{font-family:Wingdings;
panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:"Lucida Console";
panose-1:2 11 6 9 4 5 4 2 2 4;}
@font-face
{font-family:"MS PGothic";
panose-1:2 11 6 0 7 2 5 8 2 4;}
@font-face
{font-family:"\@MS PGothic";}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri",sans-serif;
mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:#0563C1;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:#954F72;
text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
{mso-style-priority:34;
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
margin-left:36.0pt;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri",sans-serif;
mso-fareast-language:EN-US;}
p.msonormal0, li.msonormal0, div.msonormal0
{mso-style-name:msonormal;
mso-margin-top-alt:auto;
margin-right:0cm;
mso-margin-bottom-alt:auto;
margin-left:0cm;
font-size:12.0pt;
font-family:"MS PGothic",sans-serif;
mso-fareast-language:JA;}
span.EmailStyle19
{mso-style-type:personal;
font-family:"Calibri",sans-serif;
color:windowtext;}
span.EmailStyle20
{mso-style-type:personal-reply;
font-family:"Calibri",sans-serif;
color:#1F497D;}
.MsoChpDefault
{mso-style-type:export-only;
font-size:10.0pt;}
@page WordSection1
{size:612.0pt 792.0pt;
margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
{page:WordSection1;}
/* List Definitions */
@list l0
{mso-list-id:12995188;
mso-list-template-ids:-219743948;}
@list l1
{mso-list-id:323358009;
mso-list-type:hybrid;
mso-list-template-ids:774530532 -1587132232 134807555 134807557 134807553 134807555 134807557 134807553 134807555 134807557;}
@list l1:level1
{mso-level-start-at:0;
mso-level-number-format:bullet;
mso-level-text:\F0D8;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;
mso-fareast-font-family:Calibri;
mso-bidi-font-family:"Times New Roman";}
@list l1:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l1:level3
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l1:level4
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l1:level5
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l1:level6
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l1:level7
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l1:level8
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l1:level9
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l2
{mso-list-id:698435727;
mso-list-type:hybrid;
mso-list-template-ids:-261824872 134807567 134807577 134807579 134807567 134807577 134807579 134807567 134807577 134807579;}
@list l2:level1
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l2:level2
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l2:level3
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l2:level4
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l2:level5
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l2:level6
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l2:level7
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l2:level8
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l2:level9
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l3
{mso-list-id:789326651;
mso-list-type:hybrid;
mso-list-template-ids:1713395334 134807567 134807577 134807579 134807567 134807577 134807579 134807567 134807577 134807579;}
@list l3:level1
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l3:level2
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l3:level3
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l3:level4
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l3:level5
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l3:level6
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l3:level7
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l3:level8
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;}
@list l3:level9
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l4
{mso-list-id:1791703911;
mso-list-template-ids:1627295570;}
@list l4:level1
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:36.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l4:level2
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:72.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l4:level3
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:108.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l4:level4
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:144.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l4:level5
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:180.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l4:level6
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:216.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l4:level7
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:252.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l4:level8
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:288.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l4:level9
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:324.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
ol
{margin-bottom:0cm;}
ul
{margin-bottom:0cm;}
</style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-GB" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal"><span style="color:#1F497D">Hi Adrian,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p> <p class="MsoNormal"><span style="color:#1F497D">I like the suggestion on ship and allow the users to debug.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p> <p class="MsoNormal"><span style="color:#1F497D">The new (11.2) UDFs available with CREATE FUNCTION are sweet but very limited compared to OME functions. Specifically:<o:p></o:p></span></p>
<p class="MsoListParagraph" style="text-indent:-18.0pt;mso-list:l2 level1 lfo7"><![if !supportLists]><span style="color:#1F497D"><span style="mso-list:Ignore">1.<span style="font:7.0pt "Times New Roman"">
</span></span></span><![endif]><span style="color:#1F497D">They cannot use C, javaScript, Perl.<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:36.0pt"><span style="color:#1F497D">I¡¯ve asked for Perl and C to be included in any future development.<o:p></o:p></span></p>
<p class="MsoListParagraph" style="text-indent:-18.0pt;mso-list:l2 level1 lfo7"><![if !supportLists]><span style="color:#1F497D"><span style="mso-list:Ignore">2.<span style="font:7.0pt "Times New Roman"">
</span></span></span><![endif]><span style="color:#1F497D">They are not installation wide.<o:p></o:p></span></p>
<p class="MsoListParagraph"><span style="color:#1F497D">They are only available to the database in which they are defined.<o:p></o:p></span></p>
<p class="MsoListParagraph" style="text-indent:-18.0pt;mso-list:l2 level1 lfo7"><![if !supportLists]><span style="color:#1F497D"><span style="mso-list:Ignore">3.<span style="font:7.0pt "Times New Roman"">
</span></span></span><![endif]><span style="color:#1F497D">Furthermore, they are not available to all users, only the user who created them.<o:p></o:p></span></p>
<p class="MsoListParagraph"><span style="color:#1F497D">There is no grant execute on function statement available.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p> <p class="MsoNormal"><span style="color:#1F497D">Where the new UDFs come into their own is for little things.<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="color:#1F497D">Eg. </span>
<span style="font-size:10.0pt;font-family:"Lucida Console";mso-fareast-language:EN-GB">cat hyperbolic.sql<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:"Lucida Console";mso-fareast-language:EN-GB">\r<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:"Lucida Console";mso-fareast-language:EN-GB">set autocommit on;<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:"Lucida Console";mso-fareast-language:EN-GB">\p\g<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:"Lucida Console";mso-fareast-language:EN-GB">CREATE OR REPLACE FUNCTION cosh(x FLOAT8)<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:"Lucida Console";mso-fareast-language:EN-GB">RETURN(FLOAT8) AS<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:"Lucida Console";mso-fareast-language:EN-GB">BEGIN<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:"Lucida Console";mso-fareast-language:EN-GB"> RETURN (EXP(x) + EXP(-x)) / 2;<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:"Lucida Console";mso-fareast-language:EN-GB">END;<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:"Lucida Console";mso-fareast-language:EN-GB">\p\g<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:"Lucida Console";mso-fareast-language:EN-GB">CREATE OR REPLACE FUNCTION sinh(x FLOAT8)<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:"Lucida Console";mso-fareast-language:EN-GB">RETURN(FLOAT8) AS<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:"Lucida Console";mso-fareast-language:EN-GB">BEGIN<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:"Lucida Console";mso-fareast-language:EN-GB"> RETURN (EXP(x) - EXP(-x)) / 2;<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:"Lucida Console";mso-fareast-language:EN-GB">END;<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:"Lucida Console";mso-fareast-language:EN-GB">\p\g<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:"Lucida Console";mso-fareast-language:EN-GB">CREATE OR REPLACE FUNCTION tanh(x FLOAT8)<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:"Lucida Console";mso-fareast-language:EN-GB">RETURN(FLOAT8) AS<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:"Lucida Console";mso-fareast-language:EN-GB">BEGIN<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:"Lucida Console";mso-fareast-language:EN-GB"> RETURN sinh(x) / cosh(x);<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:"Lucida Console";mso-fareast-language:EN-GB">END;<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:"Lucida Console";mso-fareast-language:EN-GB">\p\g<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p> <p class="MsoNormal"><span style="color:#1F497D">Marty<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p> <div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span lang="EN-US" style="mso-fareast-language:JA">From:</span></b><span lang="EN-US" style="mso-fareast-language:JA"> Adrian Williamson <
adrian.williamson@rationalcommerce.com>
<b>Sent:</b> 11 August 2021 15:11<br>
<b>To:</b> Martin Bowes <
martin.bowes@ndph.ox.ac.uk>;
roy.hann@rationalcommerce.com<br>
<b>Subject:</b> RE: [Info-ingres] Convert hex string to an integer<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><a href="
https://docs.actian.com/actianx/11.2/index.html#page/RelSum%2FScalar_User-defined_Functions_(UDFs).htm%23wwconnect_header">
https://docs.actian.com/actianx/11.2/index.html#page/RelSum%2FScalar_User-defined_Functions_(UDFs).
htm%23wwconnect_header</a><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">UDF not OME¡¦<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span lang="EN-US" style="mso-fareast-language:EN-GB">From:</span></b><span lang="EN-US" style="mso-fareast-language:EN-GB"> Adrian Williamson <<a href="mailto:
adrian.williamson@rationalcommerce.com">adrian.williamson@
rationalcommerce.com</a>>
<b>Sent:</b> 11 August 2021 15:07<br>
<b>To:</b> 'Martin Bowes' <<a href="mailto:
martin.bowes@ndph.ox.ac.uk">
martin.bowes@ndph.ox.ac.uk</a>>; '
roy.hann@rationalcommerce.com' <<a href="mailto:
roy.hann@rationalcommerce.com">
roy.hann@rationalcommerce.com</a>><br>
<b>Subject:</b> RE: [Info-ingres] Convert hex string to an integer<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt;text-indent:-18.0pt;mso-list:l1 level1 lfo3">
<![if !supportLists]><span style="font-family:Wingdings"><span style="mso-list:Ignore">¨ª<span style="font:7.0pt "Times New Roman"">
</span></span></span><![endif]>after compiling with no errors I¡¯m not too sure what more I have to do.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Ship it and let the customers find the bugs?<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Te He.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Good work Marty.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Did I read somewhere you can extend Ingres using Perl or Java or basically something else other than ¡®C¡¯?<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span lang="EN-US" style="mso-fareast-language:EN-GB">From:</span></b><span lang="EN-US" style="mso-fareast-language:EN-GB">
<a href="mailto:
info-ingres-bounces@lists.planetingres.org">
info-ingres-bounces@lists.planetingres.org</a> <<a href="mailto:
info-ingres-bounces@lists.planetingres.org">
info-ingres-bounces@lists.planetingres.org</a>>
<b>On Behalf Of </b>Martin Bowes<br>
<b>Sent:</b> 11 August 2021 14:21<br>
<b>To:</b> <a href="mailto:
info-ingres@lists.planetingres.org">
info-ingres@lists.planetingres.org</a><br>
<b>Subject:</b> [Info-ingres] Convert hex string to an integer<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Hi All,<o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal">There has got to be an easier way¡¦.<o:p></o:p></p> <p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal">Given a string which represents a hex value, convert it to an integer of a given size.<o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal">The only solution I¡¯ve come up with is by making an OME function. See attached.<o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal">Here is how I would describe that function¡¦<o:p></o:p></p>
<p class="MsoNormal">hex2int(hexString, integerSize)<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">Convert the indicated hex string into a signed integer of the given size. Case is ignored.<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"> <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">Two¡¯s complement is respected and hence when converting to integer1 the string ¡®FF¡¯ becomes -1. However the same string converted to integer2 becomes 255.<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt"> <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:36.0pt">The hex string may be prefixed with ¡®0x¡¯, ¡®+0x¡¯, or ¡®-0x¡¯. But in the case of ¡®-0x¡¯ there is the possibility of a double negative if the string converts to a negative integer.<o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal">And here is some sample output¡¦<o:p></o:p></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:"Lucida Console"">select hex2int('FFFD', 8)\g</span><o:p></o:p></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:"Lucida Console"">¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤</span><o:p></o:p></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:"Lucida Console"">¦¢col1 ¦¢</span><o:p></o:p></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:"Lucida Console"">¦§¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦©</span><o:p></o:p></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:"Lucida Console"">¦¢ 65533¦¢</span><o:p></o:p></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:"Lucida Console"">¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥</span><o:p></o:p></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:"Lucida Console"">(1 row)</span><o:p></o:p></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:"Lucida Console""> </span><o:p></o:p></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:"Lucida Console"">select hex2int('FFFD', 22)\g</span><o:p></o:p></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:"Lucida Console"">E_OME001 hex2int(): Invalid size '22' specified. It must be one of 1, 2,</span><o:p></o:p></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:"Lucida Console""> 4, 8</span><o:p></o:p></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:"Lucida Console""> (Tue Aug 10 14:47:58 2021)</span><o:p></o:p></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:"Lucida Console""> </span><o:p></o:p></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:"Lucida Console"">select hex2int('FFFD', 2)\g</span><o:p></o:p></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:"Lucida Console""> </span><o:p></o:p></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:"Lucida Console"">¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¤</span><o:p></o:p></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:"Lucida Console"">¦¢col1 ¦¢</span><o:p></o:p></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:"Lucida Console"">¦§¦¡¦¡¦¡¦¡¦¡¦¡¦©</span><o:p></o:p></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:"Lucida Console"">¦¢ -3¦¢</span><o:p></o:p></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:"Lucida Console"">¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¥</span><o:p></o:p></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:"Lucida Console"">(1 row)</span><o:p></o:p></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:"Lucida Console""> </span><o:p></o:p></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:"Lucida Console"">select hex2int('garbage', 8)\g</span><o:p></o:p></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:"Lucida Console"">Executing . . .</span><o:p></o:p></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:"Lucida Console""> </span><o:p></o:p></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:"Lucida Console"">E_OME001 hex2int(): Non hex character 'g' found in string.</span><o:p></o:p></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.0pt;font-family:"Lucida Console""> (Wed Aug 11 14:08:29 2021)</span><o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal">So the questions are:<o:p></o:p></p>
<ol style="margin-top:0cm" start="1" type="1">
<li class="MsoNormal" style="mso-list:l3 level1 lfo6">Can anyone do this in simple SQL? If so, how?<o:p></o:p></li><li class="MsoNormal" style="mso-list:l3 level1 lfo6">Could people have a quick look over the C code and give me some feedback please. I¡¯m
not a C coder and after compiling with no errors I¡¯m not too sure what more I have to do.<o:p></o:p></li></ol>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal">Thanks,<o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal">Marty<o:p></o:p></p>
</div>
</body>
</html>
--- SoupGate-Win32 v1.05
* Origin: fsxNet Usenet Gateway (21:1/5)