| | Java | PocketC | MortRunner | nscript |
| Typing | Strong; + | (Semi-)strong; + | No variables | -; weak |
| Operators and their precedence; is the latter C-like? | + | + (no ?:; no comma op.; no += and the like) | - | ? (no explicit op. prec. table supplied!) |
| All C-like statements (return (expr), if, for, while, do/while, switch/case, break, continue) present? | + | +; can even handle string constants in switch/case | Nope. No return (there're no functions/procedures); if: If <condition> <commands> [ Else <commands> ] EndIf switch/case: Choice <title>,<hint>,<value1>, <value2>[,<value3>,...] Case <value>[, <value>,...] <commands> [ Case <value>[,<value>,...] <commands> ... ] EndChoice While: While <condition> <commands> EndWhile for: Repeat <count> <commands> EndRepeat | +; supports parameterized break |
| Automated character set conversions; MIME64 encoding support | - (with add-on libs only) | - | - | IsLeadChar (buf); conversions between ASCII/ SJIS/JIS and EUC: GetCodeType (buf), SjisToJis (buf), JisToSjis (buf), SjisToEuc (buf), EucToSjis (buf), cpconvert (string, fromto), cpaconvert (string, to); BASE64: Base64Decode (buf), Base64DecodeHash (buf, &hash[]), Base64Encode (buf), Base64EncodeHash (hash []) |
| Regular expressions | - (officially supported only from 1.5; with prev. versions incl. those on PPC, with additional libs) | - | - | RegMatch ("reg", buf, &hash [] = 0, op = " "), RegMatchAll ("reg", buf, &hash [] = 0, op = " "), RegReplace ("reg", to, buf, op = " ") |
| Keystroke event sending to other windows/ processes | - | - | Send<special character> [<window title>]; SendKeys [<window title>,]<string> | SendKeys (hWnd, string, keys) |
| Mouse event sending to other windows/ processes | - | - | MouseClick [<window title>,]<x>,<y>; MouseDblClick [<window title>,]<x>,<y>; MouseDown [<window title>,]<x>,<y>; MouseUp [<window title>,]<x>,<y> | tap (x, y [, hWnd]) |
| Drawing | + everything in java.awt.Graphics | drawimage (string filename, int x, int y, int w, int h, int sizeratio,int flag) , imgload (string filename, int scale ,int max_width,int max_height) , imgunload (int imghandle) , imgtrans (int imghandle, int xpos,int ypos,int red, int green, int blue) , imgstretchblt (int imghandle, int destx,int desty, int destw,int desth, int srcx, int srcy, int srcw,int srch, int rop] , imgbitblt (int imghandle, int destx,int desty, int destw,int desth, int srcx, int srcy, int rop] , keepscreen_on () , keepscreen_off () , screenx () , screeny () , clearg () , text (int x, int y, string str) , line (int x1, int y1, int x2, int y2) , rect (int x1, int y1, int x2, int y2) , roundrect (int x1, int y1, int x2, int y2,int cx,int cy) , circle (int x, int y, int r) , ellipse (int x1, int y1, int x2, int y2) , drawbitmap (string filename,int x,int y) , drawbitblt (string filename,int x,int y,int flag) , setbrushattr (int R, int G, int B) , setpenattr (int style, int width, int R, int G, int B) , setbkcolor (int R, int G, int B) , settextcolor (int R, int G, int B) , setpixelattr (int R, int G, int B) , setpixel (int x,int y) , getpixelR (int x,int y) , getpixelG (int x,int y) , getpixelB (int x,int y) , settextangle (int x) , settextdefault () , setfontattr (string fontname, int italic, int underline,int strikeout, int weight,int width, int height) , textw (string text) , texth(string text) , setbkmode (int iBkMode) , getbkmode () , polygon (int * array, int nCount) , polyline (int * array, int nCount) | - | - |
| GUI | + everything in java.awt | Able to create/access the contents/state of any standard WindowsCE GUI components; see createctrl1(string strCtrl, string strName, int nStyle, int nExStyle, int xpos, int ypos, int width, int height, int nID,int parentID) and createctrl() etc. Also able to create top-level windows etc. Also, the usual dialog windows: alert(string text), confirm(string text), about(string text), | Yes/no dialog creation: question <text> [ , <title> ] | (Advanced) dialogs only: msgbox (message, title, type), fileopendialog (title), folderdialog (title), string input dialogs: string getsdialog (title,string), list choice dialogs with four buttons: getcbdialog (title, items[], titleokbutton="Ok", titlecanselbutton ="Cancel", titlebutton3="", titlebutton4= " ") |
| Controlling (titling/ miniming/ activating etc) other windows of other processes | - | - | Show <window title>, Minimize <window title>, Close <window title>; checks: wndExists <window title>, wndActive <window title> | setwindowtext (hwnd,title), listwindow (list[]), iswindowvisible (hwnd), FindWindow(string, full=0), destroywindow (hWnd), setfwindow ([hWnd]), getfwindow () |
| Input keyboard/ mouse events | + everything in java.awt.event | eventmsg(int block, pointer msg), event(int blocking), postevent(int nEvent), penx() mousex(), peny() or mousey(), cursorwait(int nState), menu(), guiid(), key(), timerid(), settimer(int timerid,int timeElapse), killtimer(int timerid), waitp(), getc(), flushevent(), keyevent(char vkey,char cScan, int flag, int extra), getnotify() | - | - |
| Controlling external apps | + everything in java.lang.System. Runtime | exec(string action, string path, string parameter) | Run <application> [, <parameter>] RunWait <application> [, <parameter> ] | Shell (file, param = " ", dir = " ", style = 1), Shellwait (file, param = " ", dir = " ", style = 1), runappattime (file,year, month,day [,hour,minutes, second]) |
| Console I/O | + everything in java.lang.System. in/out and java.io.* | puts(string text) putsl(string text) gets(string prompt) clear() | - | puts (buf) gets (len) getchar () |
| Time | + everything in java.util.Date, Calendar etc. | setlocaltime(pointer timearray) , getlocaltime(pointer arrayint) , ticks() , getyear() , getmonth() , getday() , gethour() , getmin() , getsec() , udatetodate(pointer udate, float& date) , datetoudate(float date, pointer udate) | - | GetDate (format), GetTime (format), SetTime(hh,mm,ss), SetDate(year [,month[ ,day]]) |
| File read/write | + everything in java.io.*; incl. higher-level operations | fileenum (int first, string filename), fileopen (string filepath, int type, int flag), filemodeget (int fhnd), filemodeset (int fhnd, int filetype), fileclose (int fhnd), fileread (int fhnd, int counter), filewrite (int fhnd, string data,int counter), filegetlen (int fhnd), filesetlen (int fhnd, int newlen), fileseek (int fhnd, int offset, int from), fileseekend (int fhnd), fileflush (int fhnd), filepos (int fhnd), writebyte (int fhnd, int v), writebytes (int fhnd, string s), writechar (int fhnd, int v), writechars (int fhnd, string s), writeint (int fhnd, int v), readint (int fhnd), readchar (int fhnd), readbyte (int fhnd) | - | FileOpen (type, file), FileClose (f), GetFileSize (f), Filesetptr (f, pos, type) , FileRead (f, &buf, len), Readstr(f,&buf,len=1024), FileReadHash (f, &hash [], len), FileWrite (f, buf, len = 0), FileWriteHash (f, hash [], len = 0) |
| File system operations | + everything in java.io.File | MoveFile (string ExistingFileName, string NewFileName), CreateDirectory (string Dirname), RemoveDirectory (string Dirname), DeleteFile (string FileName), GetFileAttr (string filepath), OpenFileDlg (string FileFilter), SaveFileDlg (string FileFilter)filecopy (string ExistingFilePath, string NewFilePath, int bFailIfExists), filemove (string ExistingFilePath, string NewFilePath, int bFailIfExists) | Copy <source file>,<target file>; XCopy <source files>,<target directory>; Rename <source file>,<target file>; Move <source files>,<target directory> Delete <files>; wildcards allowed; MkDir <directory>, RmDir <directory>; checks: fileExists <file> dirExists <directory> | CreateDirectory (dir), RemoveDirectory (dir), GetCurrentDirectory (), SetCurrentDirectory (dir), CopyFile (from, to) , MoveFile (from, to) , DeleteFile (file) |
| File system searching | Needs to be coded by hand, based on std classes | - | - | File find: FileFindInit (file), FileFindNext (ffi), FileFindClose (ffi), FileFindAttributes (ffi), FileFindName (ffi), FileFindSize (ffi) |
| TCP/IP | + everything in java.net, com.sun.* etc | - | - | gethostname (), gethostbyname (server), getsockport (soc), socket (af = 2, type = 1, protocol = 0), closesocket (soc), connect (soc, ip, port), bind (soc, ip, port), listen (soc, backlog), accept (soc), select (soc, time), recv (soc, &buf, len = 256, flags = 0), RecvHash (soc, &hash [], len = 256, flags = 0), send (soc, buf, len = 0, flags = 0), SendHash (soc, hash [], len = 0, flags = 0) |
| Multithreading? | + | - | - | - |
| String | + everything in java.lang.String and the wrapper classes (java.lang.Integer, Byte, Float etc) | strgetc(str, int index), strsetc(str,int index, char ch), strlen(str), strmid(str, int first, int len), strleft(str, int len), strright(str, int len), strupr(str), strlwr(str), strrchr(str,char ch), strchr(string,char), strspn(src,charset), strrvrs(string), strncmp(string1,string2,int count), isalpha(char ch), isalphanum(char ch), isupper(char ch), islower(char ch), format(float fval, int precision), hex(int ival) | - | IsType (val), Int (str), UIntStr (i), Chr (i), Asc (buf), String (cnt, char) , Trim (buf), Len (buf), StrCmp (str1, str2, len = -1) , Left (buf, len), Right (buf, len), Mid (buf, index, len = -1), InStr (buf, str, start = 0, op = 0), ToLower (buf), ToUpper (buf), translate (str, s1, s2) , pos (substring, string) , strtok (delimiters, string) , parse (string, substring1, delimiter1,..., substringN, delimiterN) |
| Math | + everything in java.lang.Math | + cos , sin , tan , acos , asin , atan , cosh , sinh , tanh , pow, sqrt , log , log10 , exp , rand, random, floor , ceil , abs | - | + sin, cos, tan, asin, acos, atan, sinh, cosh, tanh, exp, log, log10, sqrt, floor, ceil, fabs, deg, rad |
| Registry: supported types? | - (no access to any kind of system registry) | Str/int/bin | Str/int | Str/int/bin |
| Registry: read? | - | + regr[datatype](int root,string keypath,string keyname) | - | + |
| Registry: write? | - | + regw[datatype](int root,string keypath,string keyname, [datatype variable]); | + RegWrite[String /Dword] [root],[path], [key],[value] | + |
| Registry: delete? | - | + regdel[key/val](int root, string keypath) | + RegDelete [root],[path], [key] | + |
| Registry: export/import to/from file? | - | - | - | rgexport (key, subkey, filename); subkey may be "" to export/import full HKCU/ HKLM/ HKCR/ HKUS; rgimport (filename); file fully Tascal-compliant! |
| Registry: does a given key exist? | - | - (not directly) | + regKeyExists <root>,<path>, <key>,<value> | - (not directly) |
| System database: read? | - (no access to any kind of system database) | + dbrecwriteprop(int rec_oid, int prop_type, int prop_id, void prop_value) | - | - |
| System database: write? | - | + dbrecpropval(int index) | - | - |
| System database: list? | - | + dbenum (int bFirst, int databasetype) | - | + int dblist (a []) |
| System database: delete? | - | + dbdelete(int dboid) | - | + dbdelete (name) |
| Infrared? | - | + | - | - |
| COM? | - (no access to any kind of COM) | + | - | - |
| Sound? | + | + beep(int soundtype), wave(string wavfile,int flag) | - | + playsound (filename, parameters) |
| WinCE/Win-related system | - | devicecpu() , deviceplatform() , devicesip(int on_off), devicesipinfo() , EnableHardwareKeyboard (int bEnable), recentdoc(string path) , loadres(int resourceid) | - | - |
| WinCE clipboard access | - | - | - | clipset (string), string clipget () |
| WinCE serial port access | - | seropen (int baud, string settings, int timeout), seropenex (string comport, int baud, string settings, int timeout), rawiropen (int baud,string settings,int timeout), commwait (int handle, int nblock), commsetmask (int handle,int mask), commgetmask (int handle), commesc (int handle, int ext), commclrbrk (int handle), commsetbrk (int handle), commclrerr (int handle, void v) | - | - |
| WinCE/app screen capture | - | CaptureBmp(int x,int y, int w, int h, string filepath) | Snapshot [<window title>] (copies the screen to clipboard ("print screen" method of the system)) | - |
| WinCE/Win-related user-controllable system | - | showhelp(string filepath), shortcut(string lnkpath,string filepath) | Screen rotation on SE devices (Rotate 0|90|180|270), setting the volume (SetVolume <value> - no balance setting!), setting the backlight level separately (SetBacklight <battery>, <external>), reset the device (Reset), Creates a shortcut (link) to the target file (CreateShortcut <link file>,<target file>), Creates a new document (appointment etc) (New <menu entry>); checks: screen landscape|portrait|vga|qvga | poweroff () |