PROCEDURE SETFIL Begin $Web_Off * ULSPFDME setup: $SetG('DATFIL','DMEWORK') $SetG('PROCFIL','DMEWORK') $SetG('TEST', 1) $SetG('\AUD', '') $SetG('\UPD', '*') $SetG('\RUL', '*') End END PROCEDURE SETFIL ************ PROCEDURE LOADDDL INCLUDE SETFIL Begin $SetG('IN', 'IN ' With $GetG('DATFIL')) If $GetG('DATFIL') NE 'DMEWORK' Then If $Upcase($Read('Do you really want to wipe out production data?')) - NE 'YES' Then $SetG('DATFIL', '****EndJob****') $SetG('IN', '* ') Stop End If End If End OPENC ?&DATFIL *UPDATE Begin If $GetG('DATFIL') EQ '****EndJob****' Then Print 'Skipping customers load...' Stop End If In ?&DATFIL FR Where - RECTYPE = 'W' OR - RECTYPE = 'L' OR - RECTYPE = 'C' DELETE RECORD End For End ?&IN DELETE FIELD RECTYPE ?&IN DEFINE FIELD RECTYPE WITH AT-MOST-ONE ORDERED * RECTYPE = 'W' (control of Web-accessed records): ?&IN DELETE FIELD LAST_UPDT ?&IN DEFINE FIELD LAST_UPDT WITH FLOAT LEN 8 AT-MOST-ONE ?&IN DELETE FIELD MAX.CITYID ?&IN DEFINE FIELD MAX.CITYID WITH FLOAT LEN 8 AT-MOST-ONE * RECTYPE = 'L' (log): ?&IN DELETE FIELD LOG ?&IN DEFINE FIELD LOG * RECTYPE = 'C' (City): ?&IN DELETE FIELD CITYID ?&IN DEFINE FIELD CITYID WITH FLOAT LEN 8 ORDERED AT-MOST-ONE ?&IN DELETE FIELD NATIVE.CITY.NAME * ?&IN DEFINE FIELD NATIVE.CITY.NAME WITH UTF-8 ?&IN DEFINE FIELD NATIVE.CITY.NAME ?&IN DELETE FIELD NATIVE.COUNTRY.NAME * ?&IN DEFINE FIELD NATIVE.COUNTRY.NAME WITH UTF-8 ?&IN DEFINE FIELD NATIVE.COUNTRY.NAME ?&IN DELETE FIELD ENGLISH.CITY.NAME ?&IN DEFINE FIELD ENGLISH.CITY.NAME ?&IN DELETE FIELD ENGLISH.COUNTRY.NAME ?&IN DEFINE FIELD ENGLISH.COUNTRY.NAME ?&IN DELETE FIELD AVERAGE.RENT ?&IN DEFINE FIELD AVERAGE.RENT WITH FLOAT LEN 8 ORDERED NUMERIC Begin If $GetG('DATFIL') EQ '****EndJob****' Then Print 'Skipping customers load...' Stop End If %uptim Float %uptim = $Web_DateNS In ?&DATFIL Store Record RECTYPE = 'W' LAST_UPDT = %uptim End Store End END PROCEDURE LOADDDL ************ PROCEDURE LOAD INCLUDE SETFIL INCLUDE LOADDDL Begin If $GetG('DATFIL') EQ '****EndJob****' Then Print 'Skipping customers load...' Stop End If %sl Object Stringlist Auto New Text To %sl 東京 日本 Tokyo Japan 1090 End Text %i Float %db Object XmlDoc %cityLis Object XmlNodelist %city Object XmlNode %db = New %db:LoadXml(%sl, 'AllowUntranslatable') %cityLis = %db:SelectNodes('*/city') For %i From 1 To %cityLis:Count %city = %cityLis(%i) Store Record RECTYPE = 'C' NATIVE.CITY.NAME = %city:Value('nativeCityName'):UnicodeToUtf8 NATIVE.COUNTRY.NAME = %city:Value('nativeCountryName'):UnicodeToUtf8 ENGLISH.CITY.NAME = %city:Value('englishCityName') ENGLISH.COUNTRY.NAME = %city:Value('englishcountryName') AVERAGE.RENT = %city:Value('averageRent') End Store End For End OPENC ?&DATFIL * END PROCEDURE LOAD ************ PROCEDURE SHOWXML INCLUDE SETFIL OPENC ?&DATFIL *read UTABLE LNTBL 100 Begin %httpReq Object HttpRequest %httpResp Object HttpResponse %respDoc Object XmlDoc Auto New %httpReq = new %httpReq:Host = 'sirius.sirius-software.com' %httpReq:Port = '9204' %httpReq:Page = '/getData.ul' %httpResp = %httpReq:Get %httpResp:ParseXml(%respDoc, 'AllowUntranslatable') %respDoc:Print End END PROCEDURE ************ PROCEDURE BROWSE.UL * http://sirius-software.com:9204/unictoy INCLUDE SETFIL OPENC ?&DATFIL *read UTABLE LNTBL 100 Begin %httpReq Object HttpRequest %httpResp Object HttpResponse %respDoc Object XmlDoc Auto New %cityLis Object XmlNodelist %city Object XmlNode %httpReq = new %httpReq:Host = 'sirius.sirius-software.com' %httpReq:Port = '9204' %httpReq:Page = '/getData.ul' %httpResp = %httpReq:Get %httpResp:ParseXml(%respDoc, 'AllowUntranslatable') $Web_Type('text/html; charset=utf-8') %i Float %dispDoc Object XmlDoc Auto New %html Object XmlNode %table Object XmlNode %row Object XmlNode %u Unicode %html = %dispDoc:AddElement('html') %html:AddElement('head'):AddElement('title', 'Toy Unicode application') %html:AddElement('p') %html:AddElement('center', 'Toy Unicode application') %html:AddElement('p') %table = %html:AddElement('body'):AddElement('center'):AddElement('table') %table:AddAttribute('border', 'yes') %row = %table:AddElement('tr') %row:AddElement('td', 'Native City, Country') %row:AddElement('td', 'English City, Country') %row:AddElement('td', 'Average rent (€)':U) %cityLis = %respDoc:SelectNodes('*/city') For %i From 1 To %cityLis:Count %city = %cityLis(%i) %row = %table:AddElement('tr') %u = %city:Value('nativeCityName'):UnicodeWith(', ') %u = %u:UnicodeWith(%city:Value('nativeCountryName')) %row:AddElement('td', %u) * Would be OK (and actually a bit faster) to use UnicodeWith: %row:AddElement('td', %city:Value('englishCityName') With ', ' With - %city:Value('englishCountryName')) %row:AddElement('td', %city:Value('averageRent')) End For If $Web_Off Then %dispDoc:Print Else %dispDoc:WebSend End If End * END PROCEDURE BROWSE.UL ************ PROCEDURE GETDATA.UL INCLUDE SETFIL OPENC ?&DATFIL Begin %doc Object XmlDoc %top Object XmlNode %city Object XmlNode %doc = New %top = %doc:AddElement('database') In ?&DATFIL FR Where RECTYPE = 'C' %city = %top:AddElement('city') %city:AddElement('nativeCityName', (NATIVE.CITY.NAME):Utf8ToUnicode) %city:AddElement('nativeCountryName', (NATIVE.COUNTRY.NAME):Utf8ToUnicode) %city:AddElement('englishCityName', ENGLISH.CITY.NAME) %city:AddElement('englishCountryName', ENGLISH.COUNTRY.NAME) %city:AddElement('averageRent', AVERAGE.RENT) End For %doc:WebSend End END PROCEDURE GETDATA.UL ************ PROCEDURE WEB_RULES JANUS NAMESERVER 198.242.244.9 53 JANUS DOMAIN SIRIUS-SOFTWARE.COM INCLUDE SETFIL JANUS FORCE W JANUS FORCE CL *SLEEP 1 JANUS DELETE CL JANUS DEFINE CL * CLSOCK 2 MASTER JANUS START CL JANUS DELETE W JANUS DEFINE W 9204 WEBSERV 2 - UPCASE RBSIZE 4096 JANUS START W JANUS WEB W ON /UNICTOY OPEN FILE DMEWORK - CMD 'IN FILE DMEWORK INCLUDE BROWSE.UL' END PROCEDURE WEB_RULES ************