Compiler / Runtime status - as March, 2010

We are getting closer to the completion of the Runtime now we are half way in the Functions and very advanced in the commands front.

Category Our implementation VFP9 % completion
Functions 389 423 92%
Commands 143 159 90%

And the Full Independent TableLayer 64 bits capable, that supports more than 1000 fields and Big tables (bigger than 4 GB) is debuting. The debuting version of the TableLayer supports only Free tables, if the table is in a database the TableLayer ignores any Database information as long names and use only the info available in the table. This is just for now, the next month it will support Database functionality as longnames.

Now we list all the commands (including not implemented) together with its implementation status to let you check what are the commands remaining to be implemented:

Command NameImplementedComments
! Yes
* Yes
= Yes
? YesBasic syntax implemented including several expressions at the same time.
?? Yes
??? Yes
ACTIVATE Yes
ADD Yes

Implemented for

ADD OBJECT AS <ClassName>

ALTER No
APPEND Yes

Implemented:

APPEND BLANK

APPEND PROCEDURES

APPEND MEMO

ASSERT Yes
AVERAGE Yes

Added clause :

IN eWorkArea

BEGIN No
BLANK YesImplemented only as a Clause of other commands
BROWSE No
CALCULATE Yes
CANCEL Yes
CASE Yes
CATCH Yes
CD Yes
CHANGE No
CHDIR Yes
CLEAR YesImplemented for CLEAR EVENTS
CLOSE YesImplemented for CLOSE DATABASES
COMPILE Yes
CONTINUE Yes
COPY Yes

Iimplemented for:

COPY FILE ...

COPY PROCEDURES

COPY MEMO

COPY TO [TYPE] CSV | DELIMITED | ODS1_2 | HTML | CUSTOM yourFilter

ODS1_2 = OpenDocument Workbook format as supported by www.OpenOffice.org Calc.

You register a new export filter with

VFP::Runtime::Data::BaseExporter::RegisterFormat(cName,oFilter)

oFilter should derive from VFP::Runtime::Data::BaseExporter

COUNT Yes

Has a new clause:

IN eWorkarea

CREATE Yes

TABLE | DBF Implemented for the FROM ARRAY syntax

DATABASE implemented clause

DEACTIVATE Yes
DEBUG Yes
DEBUGOUT Yes
DECLARE Yes
DEFINE Yes

Syntax implemented for Interfaces, Classes, Structures and enums:

DEFINE CLASS myClass AS System::Object

PROCEDURE MethodA

Procedure MethodB as long

TPARAMETERS cValue as String

ENDDEFINE

DEFINE INTERFACE aInteface

PROCEDURE MethodA

Procedure MethodB as long

TPARAMETERS cValue as String

ENDDEFINE

DEFINE ENUM MyEnum

nValue1

nValue2

ENDDEFINE

DEFINE STRUCTURE MyStruct

PROCEDURE MethodA

Procedure MethodB as long

TPARAMETERS cValue as String

ENDEFINE

DELETE Yes

Implemented for

DELETE ** records **

DELETE FILE

DELETE CONNECTION

DELETE TRIGGER

DELETE VIEW

DIMENSION Yes
DIR Yes
DIRECTORY Yes
DISPLAY No
DO Yes

Implemented as

DO ProcedureName WITH args...

The parameters are passed by value. If you want to pass them by reference you can prefix them with @ like

DO ProcedureName with @arg1, args ...

ProcedureName can be a PROCEDURE or FUNCTION in the current program or in any other program also compiled in the project. You don't need to SET PROCEDURE TO progName, to use ProcedureName from progName. ProcedureName must be resolved at compile time or an error will arise.

The syntax

DO myprog.prg is allowed but not implemented yet (does nothing), it will be implemented before version 1.0

and

DO FORM is implemented and used widely inside the runtime like:

DO FORM FormName [NAME VarName [LINKED]] [WITH cParameterList]

[TO VarName] [NOREAD] [NOSHOW]

And as

DO CASE

DOCK YesThe user defined forms still are not DOCK enabled
DOEVENTS Yes
DROP Yes
EDIT No
EJECT Yes
ELIF Yes
ELSE Yes
END Yes
ENDCASE Yes
ENDDEFINE YesSyntax extended see DEFINE
ENDDO Yes
ENDFOR Yes
ENDFUNC Yes
ENDIF Yes
ENDPRINTJOB Yes
ENDPROC Yes
ENDSCAN Yes
ENDTEXT Yes
ENDTRY Yes
ENDWITH Yes
ERASE YesClause RECYCLE NOT IMPLEMENTED YET
ERROR Yes
EXIT Yes
EXPORT YesSupports the same formats as COPY TO. See the supported formats and how to extend it with your own formats
EXTERNAL YesThis is just to enable more programs to compile under .NET
FINALLY Yes
FIND YesImplemented as a call to SEEK
FLUSH Yes
FOR Yes
FREE YesFREE TABLE - syntax
FUNCTION Yes
GATHER Yes
GETEXPR Yes
GO Yes
GOTO Yes
HELP Yes
HIDDEN YesActually implemented as a private member
HIDE Yes
IF Yes
IFDEF Yes
IFNDEF Yes
IMPLEMENTS Yes
IMPORT No
INCLUDE Yes
INDEX YesImplementado para CDX index files
INSERT Yes
KEYBOARD Yes
LABEL No
LIST No
LOCAL Yes
LOCATE Yes
LOOP Yes
LPARAMETERS Yes
MD Yes
MKDIR Yes
MODIFY No
MOVE Yes
NEXT Yes
NODEFAULT Yes
NOTE Yes
ON Yes
OPEN YesOPEN DATABASE - implemented
OTHERWISE Yes
PACK Yes

PACK for tables

PACK DATABASE

PARAMETERS Yes
POP YesPOP KEY is not implemented
PRINTJOB Yes
PRIVATE Yes
PROCEDURE Yes
PROTECTED Yes
PUBLIC Yes
PUSH YesPUSH KEY is not implemented
QUIT Yes
RD Yes
READ YesImplemented for READ EVENTS
RECALL Yes
REINDEX YesNeeds exclusive access
RELEASE Yes
REMOVE YesREMOVE TABLE - implemented
RENAME Yes
REPLACE Yes
REPORT No
RESTORE No
RESUME Yes
RETRY Yes
RETURN Yes
RMDIR Yes
ROLLBACK No
RUN Yes
SAVE No
SCAN YesIn the table layer for 64 bits, the WHILE clause is accepted but ignored this will be reenabled in the next revision.
SCATTER YesNAME clause only works for VFPObjects
SEEK Yes
SELECT Yes
SET Yes
SHOW Yes
SIZE Yes
SKIP Yes
SORT No
STORE Yes
SUM Yes

Has a new clause :

IN eWorkArea

SUSPEND YesImplemented as System::Diagnostics::Debugger::Break()
TEXT Yes
THROW Yes
TOTAL Yes

Has a new clause :

IN eWorkArea

TRY Yes
TYPE YesImplemented output to file
UNDEFINE Yes
UNLOCK Yes
UPDATE No
USE Yes
VALIDATE Yes
WAIT Yes

Does not suportst the NOCLEAR BEHAVIOR. Allways use a Window to display the message even if you don't include WINDOW.

TODO: Fix the implementation.

WITH Yes
ZAP Yes
ZOOM Yes
\ Yes
\\ Yes
DEFINE_MENU Yes
 

And the following functions is the full list of VFP Functions:

FUNCTION Implemented Comments
ACLASS Yes
ACOPY Yes
ACOS Yes
ADATABASES Yes
ADBOBJECTS Yes
ADDBS Yes
ADDPROPERTY Yes
ADEL Yes
ADIR Yes
ADLLS No
ADOCKSTATE No
AELEMENT Yes
AERROR Yes
AEVENTS Yes
AFIELDS Yes
AFONT Yes Implemented only for the one parameter version
AGETCLASS Yes
AGETFILEVERSION Yes
AINS Yes
AINSTANCE Yes
ALANGUAGE No
ALEN Yes
ALIAS Yes
ALINES Yes
ALLTRIM Yes
AMEMBERS No
AMOUSEOBJ No
ANETRESOURCES Yes
APRINTERS Yes
APROCINFO No
ASC Yes
ASCAN Yes
ASELOBJ No
ASESSIONS Yes
ASIN Yes
ASORT Yes
ASQLHANDLES Yes
ASTACKINFO Yes
ASUBSCRIPT Yes
AT Yes
ATAGINFO Yes
ATAN Yes
ATC Yes
ATCC Yes
ATCLINE Yes
ATLINE Yes
ATN2 Yes
AT_C Yes
AUSED Yes
AVCXCLASSES Yes
BAR Yes
BARCOUNT Yes
BARPROMPT Yes
BETWEEN Yes
BINDEVENT Yes
BINTOC Yes The S (sign) parameter is not supported
BITAND Yes
BITCLEAR Yes
BITLSHIFT Yes
BITNOT Yes
BITOR Yes
BITRSHIFT Yes
BITSET Yes
BITTEST Yes
BITXOR Yes
BOF Yes
CANDIDATE Yes
CAPSLOCK Yes
CAST No
CDOW Yes
CDX Yes
CEILING Yes
CHR Yes
CHRSAW Yes
CHRTRAN Yes
CHRTRANC Yes
CLEARRESULTSET Yes Included for Backward compatibility
CMONTH Yes
CNTBAR Yes
CNTPAD Yes
COL Yes Implemented as _SCREEN.CurrentX
COMARRAY Yes
COMCLASSINFO No
COMPOBJ Yes
COMPROP Yes
COMRETURNERROR Yes
COS Yes
CPCONVERT Yes
CPCURRENT Yes
CPDBF Yes
CREATEBINARY Yes
CREATEOBJECT Yes
CREATEOBJECTEX Yes
CREATEOFFLINE No
CTOBIN Yes The S (sign) parameter is not supported
CTOD Yes
CTOT Yes
CURDIR Yes
CURSORGETPROP Yes
CURSORSETPROP Yes
CURSORTOXML No
CURVAL Yes
DATE Yes
DATETIME Yes
DAY Yes
DBC Yes
DBF Yes
DBGETPROP Yes
DBSETPROP Yes
DBUSED Yes
DDEABORTTRANS No Won't be implemented in 1.0
DDEADVISE No Won't be implemented in 1.0
DDEENABLED No Won't be implemented in 1.0
DDEEXECUTE No Won't be implemented in 1.0
DDEINITIATE No Won't be implemented in 1.0
DDELASTERROR No Won't be implemented in 1.0
DDEPOKE No Won't be implemented in 1.0
DDEREQUEST No Won't be implemented in 1.0
DDESETOPTION No Won't be implemented in 1.0
DDESETSERVICE No Won't be implemented in 1.0
DDESETTOPIC No Won't be implemented in 1.0
DDETERMINATE No Won't be implemented in 1.0
DEFAULTEXT Yes
DELETED Yes
DESCENDING Yes
DIFFERENCE Yes
DIRECTORY Yes
DISKSPACE Yes
DISPLAYPATH Yes
DMY Yes
DODEFAULT Yes
DOW Yes
DRIVETYPE Yes
DROPOFFLINE No
DTOC Yes
DTOR Yes
DTOS Yes
DTOT Yes
EDITSOURCE Yes
EMPTY Yes
EOF Yes
ERROR Yes
EVALUATE Yes
EVENTHANDLER Yes
EVL Yes
EXECSCRIPT Yes
EXP Yes
FCHSIZE Yes
FCLOSE Yes
FCOUNT Yes
FCREATE Yes
FDATE Yes
FEOF Yes
FERROR No
FFLUSH Yes
FGETS Yes
FIELDS Yes
FILE Yes
FILETOSTR Yes
FILTER Yes
FKLABEL Yes
FKMAX Yes
FLOCK Yes
FLOOR Yes
FONTMETRIC Yes
FOPEN Yes
FOR Yes
FORCEEXT Yes
FORCEPATH Yes
FOUND Yes
FPUTS Yes
FREAD Yes
FSEEK Yes
FSIZE Yes
FTIME Yes
FULLPATH Yes
FV Yes
FWRITE Yes
GETAUTOINCVALUE Yes
GETBAR Yes
GETCOLOR Yes
GETCP Yes
GETCURSORADAPTER Yes
GETDIR Yes The lRootOnly parameter is not supported.
GETENV Yes
GETFILE Yes The cOpenButtonCaption and nButtonType are not supported yet. You can pass them as parameters but are ignored
GETFLDSTATE No
GETFONT Yes
GETINTERFACE Yes
GETNEXTMODIFIED Yes
GETOBJECT Yes
GETPAD Yes
GETPEM Yes
GETPICT Yes
GETPRINTER Yes
GETRESULTSET Yes
GETWORDCOUNT Yes
GETWORDNUM Yes
GOMONTH Yes
HEADER Yes
HOME Yes
HOUR Yes
ICASE Yes Implemented as an intrinsic function
ID Yes
IDXCOLLATE Yes
IIF Yes Implemented as an intrinsic function
IMESTATUS Yes Implemented as a property IMEMODE of _SCREEN. Available only for Japanese locale.
INDBC Yes
INDEXSEEK Yes
INKEY Yes
INLIST Yes
INPUTBOX Yes
INSMODE Yes
INT Yes
ISALPHA Yes
ISBLANK Yes
ISCOLOR Yes
ISDIGIT Yes
ISEXCLUSIVE Yes
ISFLOCKED Yes
ISLEADBYTE Yes
ISLOWER Yes
ISMEMOFETCHED Yes Actually always returns .T. as there is not support for delayed memo fetching
ISMOUSE Yes
ISNULL Yes
ISPEN Yes Partially implemented Return .T. if Pen Extensions are available
ISREADONLY Yes
ISRLOCKED Yes
ISTRANSACTABLE Yes Returns .F. as transaction are not enabled yet. Transactions will be implemented soon.
ISUPPER Yes
JUSTDRIVE Yes
JUSTEXT Yes
JUSTFNAME Yes
JUSTPATH Yes
JUSTSTEM Yes
KEY Yes
KEYMATCH Yes
LASTKEY Yes
LEFT Yes
LEFTC Yes
LEN Yes
LENC Yes
LIKE Yes
LIKEC Yes
LINENO Yes Always return the line number of the file where the code resides, not relative to the procedure. Needs to have been compiled with debug info.
LOADPICTURE Yes Now the syntax is LOADPICTURE LPARAMETERS tcFile[, tnFlags] When tnFlags = 0 or Omitted loads a COM Picture When tnFlags = 1 It Returns a System:Drawing:Image
LOCFILE Yes
LOCK Yes
LOG Yes
LOG10 Yes
LOOKUP Yes
LOWER Yes
LTRIM Yes
LUPDATE Yes
MAKETRANSACTABLE Yes Returns .F. as transaction are not enabled yet. Transactions will be implemented soon.
MAX Yes
MCOL Yes
MDOWN Yes Now supports the tnFlags 1 - Check if the left button is pressed as previous 2 - Check if the right button is pressed 4 - Check if the middle button is pressed
MDX Yes
MDY Yes
MEMLINES Yes
MEMORY Yes Now supports the following arguments tnValue as integer 0 - (Default) Works as VFP9 version returning 640 1 - Return available physical memory 2 - Return available virtual memory 3 - Return total physical memory 4 - Return total virtual memory
MENU Yes
MESSAGEBOX Yes
MESSAGE Yes
MIN Yes
MINUTE Yes
MLINE Yes
MOD Yes
MONTH Yes
MRKBAR Yes
MRKPAD Yes
MROW Yes
MTON Yes
MWINDOW Yes
NDX No
NEWOBJECT Yes
NORMALIZE Yes
NTOM Yes
NUMLOCK Yes
NVL Yes
OBJNUM Yes Implemented
OBJTOCLIENT Yes
OBJVAR Yes Implemented
OCCURS Yes
OLDVAL Yes
ON No
ORDER Yes
OS Yes Supports most of the VFP values, from 1 to 8, except nValue = 9 AND nValue = 10
PAD Yes
PADC Yes
PADL Yes
PADPROMPT Yes
PADR Yes
PARAMETERS Yes
PAYMENT Yes
PCOL Yes
PCOUNT Yes
PEMSTATUS Yes
PI Yes
POPUPS Yes
PRIMARY Yes
PRINTSTATUS Yes Always returns .T.
PRMBAR Yes
PRMPAD Yes
PROGRAM Yes
PROMPT Yes
PROPER Yes
PROW Yes
PRTINFO No
PUTFILE Yes
PV Yes
QUARTER Yes
RAISEEVENT Yes
RAND Yes
RAT Yes
RATC Yes
RATLINE Yes
RECCOUNT Yes
RECNO Yes
RECSIZE Yes
REFRESH No
RELATION No
REMOVEPROPERTY Yes
REPLICATE Yes
REQUERY No
RGB Yes
RGBSCHEME No Backward compatibility not implemented in 1.0
RIGHT Yes
RIGHTC Yes
RLOCK Yes
ROUND Yes
ROW Yes
RTOD Yes
RTRIM Yes
SAVEPICTURE Yes
SCOLS Yes
SEC Yes
SECONDS Yes
SEEK Yes
SELECT Yes
SET Yes
SETFLDSTATE No
SETRESULTSET Yes
SIGN Yes
SIN Yes
SKPBAR Yes
SKPPAD Yes
SOUNDEX Yes
SPACE Yes
SQLCANCEL Yes
SQLCOLUMNS Yes
SQLCOMMIT Yes
SQLCONNECT Yes
SQLDISCONNECT Yes
SQLEXEC Yes
SQLGETPROP Yes
SQLIDLEDISCONNECT Yes
SQLMORERESULTS No
SQLPREPARE Yes
SQLROLLBACK Yes
SQLSETPROP Yes
SQLSTRINGCONNECT Yes
SQLTABLES Yes
SQRT Yes
SROWS Yes
STR Yes
STRCONV No
STREXTRACT Yes
STRTOFILE Yes
STRTRAN Yes
STUFF Yes
STUFFC Yes
SUBSTR Yes
SUBSTRC Yes
SYS Yes
SYSMETRIC Yes
TABLEREVERT Yes
TABLEUPDATE Yes
TAG Yes
TAGCOUNT Yes
TAGNO Yes
TAN Yes
TARGET Yes
TEXTMERGE No
TIME Yes
TRANSFORM Yes
TRIM Yes
TTOC Yes
TTOD Yes
TXNLEVEL Yes
TXTWIDTH Yes
TYPEAHEAD Yes
UNBINDEVENTS Yes
UNIQUE Yes
UPPER Yes
USED Yes
VAL Yes
VARTYPE Yes
VERSION Yes
WBORDER Yes
WCHILD Yes
WCOLS Yes
WDOCKABLE Yes
WEEK Yes
WEXIST Yes
WFONT Yes
WLAST Yes
WLCOL Yes
WLROW Yes
WMAXIMUM Yes
WMINIMUM Yes
WONTOP Yes
WOUTPUT Yes
WPARENT Yes
WREAD Yes Included for backward compatibility. Returns .T.
WROWS Yes
WTITLE Yes
WVISIBLE Yes
XMLTOCURSOR No
XMLUPDATEGRAM No
YEAR Yes