+ function_return (cstring(l_sUTF8))\r
+end_function\r
+\r
+// https://msdn.microsoft.com/en-us/library/windows/desktop/ms647473%28v=vs.85%29.aspx\r
+// Note security considerations, as this function doesn't enforce string lengths\r
+function ansi_to_oem global string argv returns string\r
+ local string l_sOem l_sAnsi\r
+ local pointer l_pOem l_pAnsi\r
+ local integer l_iResult\r
+ \r
+ if (length(argv) <> 0) begin\r
+ move argv to l_sAnsi\r
+ getaddress of l_sAnsi to l_pAnsi\r
+ zerostring (length(l_sAnsi)+1) to l_sOem\r
+ getaddress of l_sOem to l_pOem\r
+ move (CharToOem(l_pAnsi, l_pOem)) to l_iResult\r
+ end\r
+ else;\r
+ move argv to l_sOem\r
+ \r
+ function_return (cstring(l_sOem))\r
+end_function\r
+\r
+// https://msdn.microsoft.com/en-us/library/windows/desktop/ms647493%28v=vs.85%29.aspx\r
+// Note security considerations, as this function doesn't enforce string lengths\r
+function oem_to_ansi global string argv returns string\r
+ local string l_sOem l_sAnsi\r
+ local pointer l_pOem l_pAnsi\r
+ local integer l_iResult\r
+ \r
+ if (length(argv) <> 0) begin\r
+ move argv to l_sOem\r
+ getaddress of l_sOem to l_pOem\r
+ zerostring (length(l_sOem)+1) to l_sAnsi\r
+ getaddress of l_sAnsi to l_pAnsi\r
+ move (CharToOem(l_pOem, l_pAnsi)) to l_iResult\r
+ end\r
+ else;\r
+ move argv to l_sAnsi\r
+ \r
+ function_return (cstring(l_sAnsi))\r