2000-11-14 02:35 UTC+0800 Ron Pinkas <ron@profit-master.com>

* contrib/dot/pp.prg
     ! Corrected few pre-processor bugs.
     ! Corrected DOT multi-line support.
   * contrib/dot/rp_dot.ch
     + Added Clipper and Harbour support for GET

   * source/pp/ppcore.c
     ! Removed redundant line in md_strAt() whiched caused bug with tanslating within [] bracket expressions.
This commit is contained in:
Ron Pinkas
2000-11-14 10:37:00 +00:00
parent 751289b692
commit cf8b3caf7c
4 changed files with 242 additions and 88 deletions

View File

@@ -1,3 +1,13 @@
2000-11-14 02:35 UTC+0800 Ron Pinkas <ron@profit-master.com>
* contrib/dot/pp.prg
! Corrected few pre-processor bugs.
! Corrected DOT multi-line support.
* contrib/dot/rp_dot.ch
+ Added Clipper and Harbour support for GET
* source/pp/ppcore.c
! Removed redundant line in md_strAt() whiched caused bug with tanslating within [] bracket expressions.
2000-11-13 16:18 UTC+0800 Brian Hays <bhays@abacuslaw.com>
* contrib/rdd_ads/ads1.c
+ adsOrderInfo: added support for most options

View File

@@ -30,6 +30,124 @@
#ifdef __HARBOUR__
#include "hbextern.ch"
#else
EXTERNAL ARRAY,ASIZE,ATAIL,AINS,ADEL,AFILL,ASCAN,AEVAL,ACOPY,ACLONE,ADIR, ASORT
EXTERNAL MEMORY
EXTERNAL ERRORLEVEL
EXTERNAL __QQPUB,__MCLEAR,__MRELEASE,__MXRELEASE,__MSAVE,__MRESTORE ;
EXTERNAL PROCNAME,PROCLINE,PROCFILE
EXTERNAL BIN2W,BIN2I,BIN2L,I2BIN,L2BIN
EXTERNAL OUTSTD,OUTERR,QQOUT,QOUT,DISPOUT,DISPOUTAT,__EJECT, ;
SETPRC,MAXROW,MAXCOL,DISPBOX,DISPBEGIN,DISPEND,DISPCOUNT,ISCOLOR, ;
NOSNOW,DBGSHADOW,SAVESCREEN,RESTSCREEN,SETCURSOR,SETBLINK,SETMODE,__ACCEPT, ;
__ACCEPTSTR
EXTERNAL __COPYFILE
EXTERNAL DESCEND,DIRECTORY
EXTERNAL VERSION,GETENV,__RUN
EXTERNAL ERRORNEW,DOSERROR
EXTERNAL FERASE,FRENAME,FILE,FREADSTR,CURDIR,DISKSPACE
EXTERNAL __KEYBOARD,NEXTKEY,LASTKEY,FKLABEL,FKMAX
EXTERNAL ISPRINTER
EXTERNAL MOD
EXTERNAL MEMOREAD,MEMOWRIT,MEMOLINE,MLCOUNT,MLPOS,MEMOTRAN
EXTERNAL NETNAME
EXTERNAL __BOX,__BOXD,__BOXS
EXTERNAL AMPM,DAYS,ELAPTIME,LENNUM,SECS,TSTRING
EXTERNAL SETCANCEL,__SETCENTURY,DEFPATH,__DEFPATH
EXTERNAL SETCOLOR,COLORSELECT
EXTERNAL SOUNDEX
EXTERNAL ISALPHA,ISDIGIT,ISUPPER,ISLOWER,ALLTRIM,PADR,PAD,PADL,PADC, ;
STUFF,STRZERO
EXTERNAL TONE
EXTERNAL TRANSFORM
EXTERNAL __XHELP
EXTERNAL ACHOICE
EXTERNAL __NONOALERT
EXTERNAL TBROWSEDB,DBEDIT
EXTERNAL DEVOUTPICT
EXTERNAL __DIR
EXTERNAL DBSETRELATION,DBCLEARREL,MEMOEDIT,MLCTOPOS,MPOSTOLC,__DBAPP,__DBCOPY, ;
__DBDELIM,__DBJOIN,__DBLIST,__DBSDF,__DBSORT,__DBTOTAL,__DBUPDATE,__DBARRANGE,__DBFLIST, ;
__DBOPENSDF,__DBTRANS,__DBTRANSREC
EXTERNAL FIELDBLOCK,FIELDWBLOCK
EXTERNAL __INPUT
EXTERNAL MEMVARBLOCK
EXTERNAL __ATPROMPT,__MENUTO
EXTERNAL READKEY
EXTERNAL SETKEY
EXTERNAL SETTYPEAHEAD
EXTERNAL TBCOLUMNNEW,TBROWSENEW
EXTERNAL __TEXTSAVE,__TEXTRESTORE
EXTERNAL __GET,__GETA
EXTERNAL __LABELFORM, __REPORTFORM
EXTERNAL __TYPEFILE
EXTERNAL __WAIT
EXTERNAL __XSAVESCREEN,__XRESTSCREEN
/*
EXTERNAL RDDSYS,AFIELDS,DBEVAL,DBCLEARFILTER,DBCLOSEALL, ;
DBCOMMIT,__DBCONTINUE,DBCREATE,DBDELETE,DBFILTER,DBGOBOTTOM,DBGOTO, ;
DBGOTOP,__DBLOCATE,__DBSETLOCATE,__DBPACK,DBRECALL,DBRLOCK,DBRLOCKLIST,DBRUNLOCK,DBSEEK, ;
DBSELECTAREA,__DBSETFOUND,DBSKIP,DBSETFILTER,DBSTRUCT,DBTABLEEXT,DBUNLOCK,DBUNLOCKALL,DBUSEAREA, ;
__DBZAP,DELETED,EOF,FCOUNT,FIELDGET,FIELDNAME,FIELDPOS,FIELDPUT,FLOCK,FOUND,HEADER,INDEXORD, ;
LASTREC,LOCK,LUPDATE,NETERR,ORDBAGEXT,ORDBAGNAME,ORDCONDSET,ORDCREATE,ORDDESTROY,ORDFOR,ORDKEY, ;
ORDLISTADD,ORDLISTCLEAR,ORDLISTREBUILD,ORDNAME,ORDNUMBER,ORDSETFOCUS,RDDLIST,RDDNAME,RDDREGISTER, ;
RECCOUNT,RECNO,RECSIZE,RLOCK,SELECT,USED,RDDSETDEFAULT,RDDSETDEFAULT,DBSETDRIVER
*/
EXTERNAL __DBPACK,__DBZAP,DBCLOSEALL,DBGOBOTTOM,DBGOTO,DBGOTOP
EXTERNAL DBREINDEX,DBCREATEINDEX,DBCLEARINDEX,DBSETINDEX,DBSETORDER
EXTERNAL __DBCOPYSTRUCT,__DBCOPYXSTRUCT,__DBCREATE,__FLEDIT
EXTERNAL INDEXEXT,INDEXKEY
#endif
STATIC aDefRules := {}, aDefResults := {}
@@ -81,7 +199,9 @@ PROCEDURE Main( sSource, sSwitch )
ENDIF
ENDIF
//ProcessLine( "#DEFINE __HARBOUR__ 1", {}, {}, {}, 0, '' )
#ifdef __HARBOUR__
ProcessLine( "#DEFINE __HARBOUR__ 1", {}, {}, {}, 0, '' )
#endif
IF bLoadRules
InitRules()
@@ -101,7 +221,7 @@ RETURN
PROCEDURE RP_Dot()
LOCAL sLine := Space(256), bBlock, GetList := {}, sPPed, nNext, sBlock, sTemp
LOCAL sTemp2, nLen, sLeft, sSymbol
LOCAL sTemp2, nLen, sLeft, sSymbol, nNextAssign
bCount := .F.
@@ -139,9 +259,9 @@ PROCEDURE RP_Dot()
DropTrailingWS( @sBlock )
sTemp2 := sBlock
WHILE ( nNext := At( ":=", sTemp2 ) ) > 0
sLeft := Left( sTemp2, nNext - 1 )
sTemp2 := SubStr( sTemp2, nNext + 2 )
WHILE ( nNextAssign := At( ":=", sTemp2 ) ) > 0
sLeft := Left( sTemp2, nNextAssign - 1 )
sTemp2 := SubStr( sTemp2, nNextAssign + 2 )
DropTrailingWS( @sLeft )
nLen := Len( sLeft )
@@ -172,9 +292,9 @@ PROCEDURE RP_Dot()
IF ! ( sTemp == '' )
sTemp2 := sTemp
WHILE ( nNext := At( ":=", sTemp2 ) ) > 0
sLeft := Left( sTemp2, nNext - 1 )
sTemp2 := SubStr( sTemp2, nNext + 2 )
WHILE ( nNextAssign := At( ":=", sTemp2 ) ) > 0
sLeft := Left( sTemp2, nNextAssign - 1 )
sTemp2 := SubStr( sTemp2, nNextAssign + 2 )
DropTrailingWS( @sLeft )
nLen := Len( sLeft )
@@ -195,9 +315,11 @@ PROCEDURE RP_Dot()
ENDDO
sTemp := "{|| " + sTemp + " }"
bBlock := &sTemp
Eval( bBlock )
ENDIF
@ 0,0 SAY "PP: "
@ 0,4 SAY Pad( sPPed, 76 ) COLOR "N/R"
@@ -1047,7 +1169,7 @@ RETURN sOut
FUNCTION MatchRule( sKey, sLine, aRules, aResults, bStatement, bUpper )
LOCAL Counter, nRules, sCommand, nRule, aMarkers, xMarker, bPartialOk
LOCAL Counter, nRules, sCommand, nRule, aMarkers, xMarker
LOCAL aMP, nOptional := 0, sAnchor, cType, aList, nMarkerId, nKeyLen
LOCAL sToken, sWorkLine, sNextExp, sNextAnchor, nMatch, nMatches
LOCAL sPad, asRevert := {}, bNext, sPreMatch, sTemp, nLen, nBookMark
@@ -1590,7 +1712,6 @@ FUNCTION MatchRule( sKey, sLine, aRules, aResults, bStatement, bUpper )
/* Skip all same level optionals to next group. */
nOptional := aMP[2]
bPartialOk := .T. /* */
WHILE nMatch < nMatches
nMatch++
aMP := aRules[nRule][2][nMatch]
@@ -1598,7 +1719,6 @@ FUNCTION MatchRule( sKey, sLine, aRules, aResults, bStatement, bUpper )
IF bDbgMatch
? "Partial not allowed"
ENDIF
bPartialOk := .F.
EXIT
ENDIF
IF ( aMP[2] >= 0 ) .AND. ( aMP[2] <= Abs( nOptional ) )
@@ -1606,36 +1726,16 @@ FUNCTION MatchRule( sKey, sLine, aRules, aResults, bStatement, bUpper )
ENDIF
ENDDO
/* Partial match was acceptable, rewind to top of same level optionals. */
/*
IF bPartialOk .AND. ( nOptional := Abs( nOptional ) ) > 1
nOptional--
IF nMatch == nMatches
WHILE nMatch > 1
nMatch--
IF aRules[nRule][2][nMatch][2] >= 0 .AND. aRules[nRule][2][nMatch][2] < nOPtional
EXIT
IF ( aMP[2] >= 0 ) .AND. ( aMP[2] <= Abs( nOptional ) )
/* Ok. */
ELSE
IF bDbgMatch
? "Reached End of Rule"
ENDIF
ENDDO
//IF nMatch == 0 .OR. ( aRules[nRule][2][nMatch][2] >= 0 .AND. aRules[nRule][2][nMatch][2] <= nOptional )
nMatch++
//ENDIF
nOptional := 0
IF bDbgMatch
? "Partial Accepted - Rewinded to:", nMatch
EXIT
ENDIF
LOOP
ENDIF
*/
IF nMatch == nMatches .AND. Abs( aMP[2] ) == nOptional /* reached EOR and still same group */
IF bDbgMatch
? "Reached End of Rule"
ENDIF
EXIT
ENDIF
IF bDbgMatch
@@ -2053,29 +2153,13 @@ FUNCTION NextExp( sLine, cType, aWords, aExp, sNextAnchor )
IF Left( sToken, 2 ) == '->'
sExp := sToken
IF sNextAnchor != '->'
sTemp := NextExp( @sLine, '<', NIL, NIL, sNextAnchor )
IF sTemp == NIL
Alert( "ERROR! orphan '->'" )
ELSE
sExp += sTemp
ENDIF
ENDIF
sLine := sToken + sLine
sExp := NIL
ELSEIF Left( sToken, 2 ) == ':='
sExp := sToken
IF sNextAnchor != ':='
sTemp := NextExp( @sLine, '<', NIL, NIL, sNextAnchor )
IF sTemp == NIL
Alert( "ERROR! orphan ':='" )
ELSE
sExp += sTemp
ENDIF
ENDIF
sLine := sToken + sLine
sExp := NIL
ELSEIF Left( sToken, 1 ) == '!'
@@ -2092,11 +2176,8 @@ FUNCTION NextExp( sLine, cType, aWords, aExp, sNextAnchor )
ELSEIF Left( sToken, 1 ) == ')'
IF sNextAnchor == ')'
sExp := sToken
ELSE
sExp := NIL
ENDIF
sLine := sToken + sLine
sExp := ''
ELSEIF Left( sToken, 1 ) == '('
@@ -2120,11 +2201,8 @@ FUNCTION NextExp( sLine, cType, aWords, aExp, sNextAnchor )
ELSEIF Left( sToken, 1 ) == '}'
IF sNextAnchor == '}'
sExp := sToken
ELSE
sExp := NIL
ENDIF
sLine := sToken + sLine
sExp := ''
ELSEIF Left( sToken, 1 ) == '{'
@@ -2196,6 +2274,11 @@ FUNCTION NextExp( sLine, cType, aWords, aExp, sNextAnchor )
ENDIF
ELSEIF Left( sToken, 1 ) == ',' .AND. ! cType $ ",A"
sLine := sToken + sLine
sExp := ''
ELSE
sExp := sToken
@@ -2762,7 +2845,7 @@ FUNCTION CompileRule( sRule, aRules, aResults, bX, bUpper )
LOCAL nNext, sKey, sAnchor := NIL, nOptional := 0, cType := NIL, nId := 0, aRule := NIL, aMatch, aWords := NIL
LOCAL aTemp, nOptionalAt, nMarkerAt, aMarkers := {}, Counter, nType, aResult := {}, sTemp, aModifiers, aValues
LOCAL aRP, nAt, sResult, nCloseAt, sMarker, nCloseOptionalAt, sPad, nResults, nMarker, nMP, nMatches, nOffset
LOCAL nWord, nWords
LOCAL nWord, nWords, cChar
/*
nMarkerID
@@ -2798,7 +2881,7 @@ FUNCTION CompileRule( sRule, aRules, aResults, bX, bUpper )
sRule := Left( sRule, nNext - 1 )
ENDIF
DO WHILE ! ( Left( sRule, 2 ) == '' )
DO WHILE ! ( Left( sRule, 1 ) == '' )
//? "Scaning: " + sRule
@@ -3012,7 +3095,67 @@ FUNCTION CompileRule( sRule, aRules, aResults, bX, bUpper )
ExtractLeadingWS( @sRule )
LOOP
ELSEIF Left( sRule, 2 ) == ":=" .OR. Left( sRule, 2 ) == "=="
IF ! ( sAnchor == NIL )
//? "ORPHAN ANCHOR: " + sAnchor
aMatch := { 0, nOptional, sAnchor, NIL, NIL }
//? aMatch[1], aMatch[2], aMatch[3], aMatch[4], aMatch[5]
aAdd( aRule[2], aMatch )
//sAnchor := NIL
aWords := NIL
cType := NIL
ENDIF
sAnchor := Left( sRule, 2 )
sRule := SubStr( sRule, 3 )
ExtractLeadingWS( @sRule )
LOOP
ELSEIF Left( sRule, 1 ) $ "():="
IF ! ( sAnchor == NIL )
//? "ORPHAN ANCHOR: " + sAnchor
aMatch := { 0, nOptional, sAnchor, NIL, NIL }
//? aMatch[1], aMatch[2], aMatch[3], aMatch[4], aMatch[5]
aAdd( aRule[2], aMatch )
//sAnchor := NIL
aWords := NIL
cType := NIL
ENDIF
sAnchor := Left( sRule, 1 )
sRule := SubStr( sRule, 2 )
ExtractLeadingWS( @sRule )
LOOP
ELSEIF ( ( cChar := Left( sRule, 1 ) ) >= 'A' .AND. cChar <= 'Z' ) .OR. ;
( cChar >= 'a' .AND. cChar <= 'z' ) .OR. cChar == '_'
IF ! ( sAnchor == NIL )
//? "ORPHAN ANCHOR: " + sAnchor
aMatch := { 0, nOptional, sAnchor, NIL, NIL }
//? aMatch[1], aMatch[2], aMatch[3], aMatch[4], aMatch[5]
aAdd( aRule[2], aMatch )
//sAnchor := NIL
aWords := NIL
cType := NIL
ENDIF
sAnchor := Upper( DropTrailingWS( NextToken( @sRule, .F. ) ) )
LOOP
ELSE
IF ! ( sAnchor == NIL )
//? "ORPHAN ANCHOR: " + sAnchor
@@ -4185,9 +4328,6 @@ FUNCTION InitRules()
/* Defines */
aDefRules := {}
#ifdef __HARBOUR__
aAdd( aDefRules, { '__HARBOUR__' , , .T. } )
#endif
aAdd( aDefRules, { '_SET_EXACT' , , .T. } )
aAdd( aDefRules, { '_SET_FIXED' , , .T. } )
aAdd( aDefRules, { '_SET_DECIMALS' , , .T. } )
@@ -4245,7 +4385,7 @@ aAdd( aCommRules, { 'ENDCASE' , { { 1, 0, NIL, '*', NIL } } , .F. } )
aAdd( aCommRules, { 'ENDFOR' , { { 1, 1, NIL, '*', NIL } } , .F. } )
aAdd( aCommRules, { 'NEXT' , { { 1, 0, NIL, '<', NIL }, { 2, 1, 'TO', '<', NIL }, { 3, 1, 'STEP', '<', NIL } } , .F. } )
aAdd( aCommRules, { 'DO' , { { 1, 0, NIL, '<', NIL }, { 0, 0, '.PRG', NIL, NIL }, { 1002, 1, 'WITH', 'A', NIL } } , .F. } )
aAdd( aCommRules, { 'CALL' , { { 1, 0, NIL, '<', NIL }, { 0, 0, '()', NIL, NIL }, { 1002, 1, 'WITH', 'A', NIL } } , .F. } )
aAdd( aCommRules, { 'CALL' , { { 1, 0, NIL, '<', NIL }, { 0, 0, '(', NIL, NIL }, { 0, 0, ')', NIL, NIL }, { 1002, 1, 'WITH', 'A', NIL } } , .F. } )
aAdd( aCommRules, { 'STORE' , { { 1, 0, NIL, '<', NIL }, { 2, 0, 'TO', '<', NIL }, { 1003, 1, ',', '<', NIL } } , .F. } )
aAdd( aCommRules, { 'SET' , { { 1, 0, 'ECHO', '*', NIL } } , .F. } )
aAdd( aCommRules, { 'SET' , { { 1, 0, 'HEADING', '*', NIL } } , .F. } )
@@ -4378,7 +4518,7 @@ aAdd( aCommRules, { 'DELETE' , { { 1, 0, 'FILE', '(', NIL } } , .F. } )
aAdd( aCommRules, { 'RENAME' , { { 1, 0, NIL, '(', NIL }, { 2, 0, 'TO', '(', NIL } } , .F. } )
aAdd( aCommRules, { 'COPY' , { { 1, 0, 'FILE', '(', NIL }, { 2, 0, 'TO', '(', NIL } } , .F. } )
aAdd( aCommRules, { 'DIR' , { { 1, 1, NIL, '(', NIL } } , .F. } )
aAdd( aCommRules, { 'TYPE' , { { 1001, 0, NIL, '(', NIL }, { 2, 1, NIL, ':', { 'TO PRINTER' } }, { 1000, 1, 'TO', NIL, NIL }, { 1003, -1, 'FILE', '(', NIL } } , .F. } )
aAdd( aCommRules, { 'TYPE' , { { 1001, 0, NIL, '(', NIL }, { 2, 1, NIL, ':', { 'TO PRINTER' } }, { 0, 1, 'TO', NIL, NIL }, { 1003, 1, 'FILE', '(', NIL } } , .F. } )
aAdd( aCommRules, { 'TYPE' , { { 1, 0, NIL, '(', NIL }, { 2, 1, NIL, ':', { 'TO PRINTER' } } } , .F. } )
aAdd( aCommRules, { 'REQUEST' , { { 1, 0, NIL, 'A', NIL } } , .F. } )
aAdd( aCommRules, { 'CANCEL' , , .F. } )
@@ -4397,7 +4537,7 @@ aAdd( aCommRules, { 'SET' , { { 0, 0, 'UNIQUE', NIL, NIL }, { 1, 0, '(
aAdd( aCommRules, { 'SET' , { { 1, 0, 'DELETED', ':', { 'ON', 'OFF', '&' } } } , .F. } )
aAdd( aCommRules, { 'SET' , { { 0, 0, 'DELETED', NIL, NIL }, { 1, 0, '(', '<', NIL }, { 0, 0, ')', NIL, NIL } } , .F. } )
aAdd( aCommRules, { 'SELECT' , { { 1, 0, NIL, '<', NIL } } , .F. } )
aAdd( aCommRules, { 'SELECT' , { { 1, 0, NIL, '<', NIL }, { 2, 1, '(', 'A', NIL }, { 0, 0, ')', NIL, NIL } } , .F. } )
aAdd( aCommRules, { 'SELECT' , { { 1, 0, NIL, '<', NIL }, { 0, 0, '(', NIL, NIL }, { 2, 1, NIL, 'A', { ')' } }, { 0, 0, ')', NIL, NIL } } , .F. } )
aAdd( aCommRules, { 'USE' , , .F. } )
aAdd( aCommRules, { 'USE' , { { 1, 0, NIL, '(', NIL }, { 2, 1, 'VIA', '<', NIL }, { 3, 1, 'ALIAS', '<', NIL }, { 4, 1, NIL, ':', { 'NEW' } }, { 5, 1, NIL, ':', { 'EXCLUSIVE' } }, { 6, 1, NIL, ':', { 'SHARED' } }, { 7, 1, NIL, ':', { 'READONLY' } }, { 1008, 1, 'INDEX', '(', NIL }, { 1009, 2, ',', '(', NIL } } , .F. } )
aAdd( aCommRules, { 'APPEND' , { { 0, 0, 'BLANK', NIL, NIL } } , .F. } )
@@ -4423,7 +4563,7 @@ aAdd( aCommRules, { 'FIND' , { { 1, 0, '=', '<', NIL } } , .F. } )
aAdd( aCommRules, { 'CONTINUE' , , .F. } )
aAdd( aCommRules, { 'LOCATE' , { { 1, 1, 'FOR', '<', NIL }, { 2, 1, 'WHILE', '<', NIL }, { 3, 1, 'NEXT', '<', NIL }, { 4, 1, 'RECORD', '<', NIL }, { 5, 1, NIL, ':', { 'REST' } }, { 0, 1, 'ALL', NIL, NIL } } , .F. } )
aAdd( aCommRules, { 'SET' , { { 0, 0, 'RELATION', NIL, NIL }, { 0, 0, 'TO', NIL, NIL } } , .F. } )
aAdd( aCommRules, { 'SET' , { { 0, 0, 'RELATION', NIL, NIL }, { 1, 1, NIL, ':', { 'ADDITIVE' } }, { 2, 1, 'TO', '<', NIL }, { 3, -1, 'INTO', '(', NIL }, { 0, 2, ',', NIL, NIL }, { 0, 3, 'TO', NIL, NIL }, { 1004, 2, NIL, '<', { ',' } }, { 1005, -2, 'INTO', '(', NIL } } , .F. } )
aAdd( aCommRules, { 'SET' , { { 0, 0, 'RELATION', NIL, NIL }, { 1, 1, NIL, ':', { 'ADDITIVE' } }, { 2, 1, 'TO', '<', NIL }, { 3, -1, 'INTO', '(', NIL }, { 0, 2, ',', NIL, NIL }, { 1000, 3, 'TO', NIL, NIL }, { 1004, -2, NIL, '<', NIL }, { 1005, -2, 'INTO', '(', NIL } } , .F. } )
aAdd( aCommRules, { 'SET' , { { 0, 0, 'FILTER', NIL, NIL }, { 0, 0, 'TO', NIL, NIL } } , .F. } )
aAdd( aCommRules, { 'SET' , { { 0, 0, 'FILTER', NIL, NIL }, { 1, 0, 'TO', '<', NIL } } , .F. } )
aAdd( aCommRules, { 'SET' , { { 0, 0, 'FILTER', NIL, NIL }, { 1, 0, 'TO', ':', { '&' } } } , .F. } )
@@ -4449,10 +4589,10 @@ aAdd( aCommRules, { 'JOIN' , { { 1, 1, 'WITH', '(', NIL }, { 2, 1, 'TO
aAdd( aCommRules, { 'COUNT' , { { 1, 1, 'TO', '<', NIL }, { 2, 1, 'FOR', '<', NIL }, { 3, 1, 'WHILE', '<', NIL }, { 4, 1, 'NEXT', '<', NIL }, { 5, 1, 'RECORD', '<', NIL }, { 6, 1, NIL, ':', { 'REST' } }, { 0, 1, 'ALL', NIL, NIL } } , .F. } )
aAdd( aCommRules, { 'SUM' , { { 1, 1, NIL, '<', { 'FOR', 'WHILE', 'NEXT', 'RECORD', 'REST', 'ALL' } }, { 1002, 2, ',', '<', NIL }, { 3, -1, 'TO', '<', NIL }, { 1004, 2, ',', '<', NIL }, { 5, 1, 'FOR', '<', NIL }, { 6, 1, 'WHILE', '<', NIL }, { 7, 1, 'NEXT', '<', NIL }, { 8, 1, 'RECORD', '<', NIL }, { 9, 1, NIL, ':', { 'REST' } }, { 0, 1, 'ALL', NIL, NIL } } , .F. } )
aAdd( aCommRules, { 'AVERAGE' , { { 1, 1, NIL, '<', { 'FOR', 'WHILE', 'NEXT', 'RECORD', 'REST', 'ALL' } }, { 1002, 2, ',', '<', NIL }, { 3, -1, 'TO', '<', NIL }, { 1004, 2, ',', '<', NIL }, { 5, 1, 'FOR', '<', NIL }, { 6, 1, 'WHILE', '<', NIL }, { 7, 1, 'NEXT', '<', NIL }, { 8, 1, 'RECORD', '<', NIL }, { 9, 1, NIL, ':', { 'REST' } }, { 0, 1, 'ALL', NIL, NIL } } , .F. } )
aAdd( aCommRules, { 'LIST' , { { 1, 1, NIL, 'A', { 'OFF', 'TO PRINTER', 'TO', 'FOR', 'WHILE', 'NEXT', 'RECORD', 'REST', 'ALL' } }, { 2, 1, NIL, ':', { 'OFF' } }, { 3, 1, NIL, ':', { 'TO PRINTER' } }, { 0, 1, 'TO', NIL, NIL }, { 4, -1, 'FILE', '(', NIL }, { 5, 1, 'FOR', '<', NIL }, { 6, 1, 'WHILE', '<', NIL }, { 7, 1, 'NEXT', '<', NIL }, { 8, 1, 'RECORD', '<', NIL }, { 9, 1, NIL, ':', { 'REST' } }, { 0, 1, 'ALL', NIL, NIL } } , .F. } )
aAdd( aCommRules, { 'DISPLAY' , { { 1, 1, NIL, 'A', { 'OFF', 'TO PRINTER', 'TO', 'FOR', 'WHILE', 'NEXT', 'RECORD', 'REST', 'ALL' } }, { 2, 1, NIL, ':', { 'OFF' } }, { 3, 1, NIL, ':', { 'TO PRINTER' } }, { 0, 1, 'TO', NIL, NIL }, { 4, -1, 'FILE', '(', NIL }, { 5, 1, 'FOR', '<', NIL }, { 6, 1, 'WHILE', '<', NIL }, { 7, 1, 'NEXT', '<', NIL }, { 8, 1, 'RECORD', '<', NIL }, { 9, 1, NIL, ':', { 'REST' } }, { 10, 1, NIL, ':', { 'ALL' } } } , .F. } )
aAdd( aCommRules, { 'REPORT' , { { 1, 0, 'FORM', '<', NIL }, { 2, 1, 'HEADING', '<', NIL }, { 3, 1, NIL, ':', { 'PLAIN' } }, { 4, 1, NIL, ':', { 'NOEJECT' } }, { 5, 1, NIL, ':', { 'SUMMARY' } }, { 6, 1, NIL, ':', { 'NOCONSOLE' } }, { 7, 1, NIL, ':', { 'TO PRINTER' } }, { 0, 1, 'TO', NIL, NIL }, { 8, -1, 'FILE', '(', NIL }, { 9, 1, 'FOR', '<', NIL }, { 10, 1, 'WHILE', '<', NIL }, { 11, 1, 'NEXT', '<', NIL }, { 12, 1, 'RECORD', '<', NIL }, { 13, 1, NIL, ':', { 'REST' } }, { 0, 1, 'ALL', NIL, NIL } } , .F. } )
aAdd( aCommRules, { 'LABEL' , { { 1, 0, 'FORM', '<', NIL }, { 2, 1, NIL, ':', { 'SAMPLE' } }, { 3, 1, NIL, ':', { 'NOCONSOLE' } }, { 4, 1, NIL, ':', { 'TO PRINTER' } }, { 0, 1, 'TO', NIL, NIL }, { 5, -1, 'FILE', '(', NIL }, { 6, 1, 'FOR', '<', NIL }, { 7, 1, 'WHILE', '<', NIL }, { 8, 1, 'NEXT', '<', NIL }, { 9, 1, 'RECORD', '<', NIL }, { 10, 1, NIL, ':', { 'REST' } }, { 0, 1, 'ALL', NIL, NIL } } , .F. } )
aAdd( aCommRules, { 'LIST' , { { 1, 1, NIL, 'A', { 'OFF', 'TO PRINTER', 'TO', 'FILE', 'FOR', 'WHILE', 'NEXT', 'RECORD', 'REST', 'ALL' } }, { 2, 1, NIL, ':', { 'OFF' } }, { 3, 1, NIL, ':', { 'TO PRINTER' } }, { 0, 1, 'TO', NIL, NIL }, { 4, 1, 'FILE', '(', NIL }, { 5, 1, 'FOR', '<', NIL }, { 6, 1, 'WHILE', '<', NIL }, { 7, 1, 'NEXT', '<', NIL }, { 8, 1, 'RECORD', '<', NIL }, { 9, 1, NIL, ':', { 'REST' } }, { 0, 1, 'ALL', NIL, NIL } } , .F. } )
aAdd( aCommRules, { 'DISPLAY' , { { 1, 1, NIL, 'A', { 'OFF', 'TO PRINTER', 'TO', 'FILE', 'FOR', 'WHILE', 'NEXT', 'RECORD', 'REST', 'ALL' } }, { 2, 1, NIL, ':', { 'OFF' } }, { 3, 1, NIL, ':', { 'TO PRINTER' } }, { 0, 1, 'TO', NIL, NIL }, { 4, 1, 'FILE', '(', NIL }, { 5, 1, 'FOR', '<', NIL }, { 6, 1, 'WHILE', '<', NIL }, { 7, 1, 'NEXT', '<', NIL }, { 8, 1, 'RECORD', '<', NIL }, { 9, 1, NIL, ':', { 'REST' } }, { 10, 1, NIL, ':', { 'ALL' } } } , .F. } )
aAdd( aCommRules, { 'REPORT' , { { 1, 0, 'FORM', '<', NIL }, { 2, 1, 'HEADING', '<', NIL }, { 3, 1, NIL, ':', { 'PLAIN' } }, { 4, 1, NIL, ':', { 'NOEJECT' } }, { 5, 1, NIL, ':', { 'SUMMARY' } }, { 6, 1, NIL, ':', { 'NOCONSOLE' } }, { 7, 1, NIL, ':', { 'TO PRINTER' } }, { 0, 1, 'TO', NIL, NIL }, { 8, 1, 'FILE', '(', NIL }, { 9, 1, 'FOR', '<', NIL }, { 10, 1, 'WHILE', '<', NIL }, { 11, 1, 'NEXT', '<', NIL }, { 12, 1, 'RECORD', '<', NIL }, { 13, 1, NIL, ':', { 'REST' } }, { 0, 1, 'ALL', NIL, NIL } } , .F. } )
aAdd( aCommRules, { 'LABEL' , { { 1, 0, 'FORM', '<', NIL }, { 2, 1, NIL, ':', { 'SAMPLE' } }, { 3, 1, NIL, ':', { 'NOCONSOLE' } }, { 4, 1, NIL, ':', { 'TO PRINTER' } }, { 0, 1, 'TO', NIL, NIL }, { 5, 1, 'FILE', '(', NIL }, { 6, 1, 'FOR', '<', NIL }, { 7, 1, 'WHILE', '<', NIL }, { 8, 1, 'NEXT', '<', NIL }, { 9, 1, 'RECORD', '<', NIL }, { 10, 1, NIL, ':', { 'REST' } }, { 0, 1, 'ALL', NIL, NIL } } , .F. } )
aAdd( aCommRules, { 'CLOSE' , { { 1, 0, NIL, '<', NIL } } , .F. } )
aAdd( aCommRules, { 'CLOSE' , , .F. } )
aAdd( aCommRules, { 'CLOSE' , { { 0, 0, 'DATABASES', NIL, NIL } } , .F. } )
@@ -4480,9 +4620,6 @@ FUNCTION InitResults()
/* Defines Results*/
aDefResults := {}
#ifdef __HARBOUR__
aAdd( aDefResults, { { { 0, '1' } }, { -1} , { } } )
#endif
aAdd( aDefResults, { { { 0, '1' } }, { -1} , { } } )
aAdd( aDefResults, { { { 0, '2' } }, { -1} , { } } )
aAdd( aDefResults, { { { 0, '3' } }, { -1} , { } } )

View File

@@ -1,2 +1,11 @@
#COMMAND BROWSE => Browse( 1, 0, 23, 79 )
#COMMAND EXIT => __QUIT()
#ifdef __HARBOUR__
#TRANSLATE _GET_( <var>, <varname>, <pic>, <valid>, <when> ) => __GET( <var>, <varname>, <pic>, <valid>, <when>, MEMVARBLOCK(<varname>) )
#else
#TRANSLATE _GET_( <var>, <varname>, <pic>, <valid>, <when> ) => __GET( MEMVARBLOCK(<varname>), <varname>, <pic>, <valid>, <when> )
#TRANSLATE __GET( <parlist,...>):Display() => __GET(<parlist>)
#endif
__get(1,2,3,4,5):display()

View File

@@ -2795,13 +2795,11 @@ static int md_strAt( char * szSub, int lSubLen, char * szText, BOOL checkword, B
lPos++;
}
}
cLastChar = *(szText+lPos);
}
#if 0
printf( "In: >%s<\n", szText );
printf( "Pos: %i Len: %i Str: >%s< At: >%s<\n", lSubPos, lSubLen, szSub, (szText+lPos-lSubLen+1) );
printf( "Rule: %i Find: >%s< In: >%s<\n", bRule, szSub, szText );
printf( "Pos: %i Len: %i At: >%s<\n", lSubPos, lSubLen, (szText+lPos-lSubLen+1) );
#endif
return (lSubPos < lSubLen? 0: lPos - lSubLen + 1);