Updating preprocessor files
This commit is contained in:
@@ -1,8 +1,22 @@
|
||||
19990608-20:00 Alexander Kresin
|
||||
Implemented: #command, #xcommand, #translate, #xtranslate .
|
||||
Some functions rewritten for a better functionality and readability.
|
||||
Fixed some bugs.
|
||||
Updated:
|
||||
* source/hbpp/hbpp.c
|
||||
* source/hbpp/harb.c
|
||||
* source/hbpp/table.c
|
||||
Removed:
|
||||
- source/hbpp/a.prg
|
||||
- source/hbpp/c.prg
|
||||
- source/hbpp/example.ch
|
||||
- source/hbpp/exam2.ch
|
||||
|
||||
Tue Jun 08 09:22:40 1999 Gonzalo A. Diethelm <Gonzalo.Diethelm@jda.cl>
|
||||
|
||||
* source/rtl/set.c (open_handle):
|
||||
Misplaced parenthesis when callin open() caused S_IWRITE to never
|
||||
be seen by open().
|
||||
* source/rtl/set.c (open_handle):
|
||||
Misplaced parenthesis when callin open() caused S_IWRITE to never
|
||||
be seen by open().
|
||||
|
||||
19990608-13:25 CET Eddie Runia
|
||||
* source/vm/initsymb.c
|
||||
@@ -23,27 +37,27 @@ Tue Jun 08 09:22:40 1999 Gonzalo A. Diethelm <Gonzalo.Diethelm@jda.cl>
|
||||
|
||||
Mon Jun 07 20:42:04 1999 Gonzalo A. Diethelm <Gonzalo.Diethelm@jda.cl>
|
||||
|
||||
* config/dir.cf:
|
||||
* config/global.cf:
|
||||
* config/install.cf:
|
||||
Made a mistake in my previous commit. This one works.
|
||||
* config/dir.cf:
|
||||
* config/global.cf:
|
||||
* config/install.cf:
|
||||
Made a mistake in my previous commit. This one works.
|
||||
|
||||
Mon Jun 07 20:20:32 1999 Gonzalo A. Diethelm <Gonzalo.Diethelm@jda.cl>
|
||||
|
||||
* config/bin.cf:
|
||||
* config/c.cf:
|
||||
* config/dir.cf:
|
||||
* config/global.cf:
|
||||
* config/install.cf:
|
||||
* config/lib.cf:
|
||||
* config/test.cf:
|
||||
* config/win32/gcc.cf:
|
||||
* config/win32/global.cf:
|
||||
* config/win32/msvc.cf:
|
||||
* config/win32/rules.cf:
|
||||
Updated rules so they work under WinNT CMD.EXE without any Unix
|
||||
utilities installed.
|
||||
|
||||
* config/bin.cf:
|
||||
* config/c.cf:
|
||||
* config/dir.cf:
|
||||
* config/global.cf:
|
||||
* config/install.cf:
|
||||
* config/lib.cf:
|
||||
* config/test.cf:
|
||||
* config/win32/gcc.cf:
|
||||
* config/win32/global.cf:
|
||||
* config/win32/msvc.cf:
|
||||
* config/win32/rules.cf:
|
||||
Updated rules so they work under WinNT CMD.EXE without any Unix
|
||||
utilities installed.
|
||||
|
||||
19990607-19:45 EDT David G. Holm <dholm@jsd-llc.com>
|
||||
* include/extend.h
|
||||
- Moved "#include <limits.h>" to include/types.h
|
||||
@@ -74,62 +88,62 @@ Mon Jun 07 20:20:32 1999 Gonzalo A. Diethelm <Gonzalo.Diethelm@jda.cl>
|
||||
|
||||
Mon Jun 07 12:58:17 1999 Gonzalo A. Diethelm <Gonzalo.Diethelm@jda.cl>
|
||||
|
||||
* source/hbpp/Makefile:
|
||||
* source/hbpp/harb.c:
|
||||
* source/hbpp/harb.h:
|
||||
* source/hbpp/hbpp.c:
|
||||
* source/hbpp/table.c:
|
||||
Added a GNU-make Makefile to this directory.
|
||||
Solved portability problems under gcc.
|
||||
Got rid of a few warnings and unused variables.
|
||||
* source/hbpp/Makefile:
|
||||
* source/hbpp/harb.c:
|
||||
* source/hbpp/harb.h:
|
||||
* source/hbpp/hbpp.c:
|
||||
* source/hbpp/table.c:
|
||||
Added a GNU-make Makefile to this directory.
|
||||
Solved portability problems under gcc.
|
||||
Got rid of a few warnings and unused variables.
|
||||
|
||||
* source/rtl/msgxxx.c:
|
||||
This file includes the correct message file based on the value of
|
||||
HB_LANGUAGE, whose default is UK.
|
||||
* source/rtl/msgxxx.c:
|
||||
This file includes the correct message file based on the value of
|
||||
HB_LANGUAGE, whose default is UK.
|
||||
|
||||
* source/rtl/classes.c:
|
||||
* source/rtl/console.c:
|
||||
* source/rtl/dir.c:
|
||||
* source/rtl/files.c:
|
||||
* source/rtl/set.c:
|
||||
Solved portability problems under gcc.
|
||||
Got rid of a few warnings and unused variables.
|
||||
* source/rtl/classes.c:
|
||||
* source/rtl/console.c:
|
||||
* source/rtl/dir.c:
|
||||
* source/rtl/files.c:
|
||||
* source/rtl/set.c:
|
||||
Solved portability problems under gcc.
|
||||
Got rid of a few warnings and unused variables.
|
||||
|
||||
* source/rtl/dir.c:
|
||||
This file had definite bugs, see difference between r1.4 and r1.3
|
||||
for more details.
|
||||
|
||||
* source/rtl/natmsg/msgdut.c:
|
||||
* source/rtl/natmsg/msggal.c:
|
||||
* source/rtl/natmsg/msgger.c:
|
||||
* source/rtl/natmsg/msghu.c:
|
||||
* source/rtl/natmsg/msgpor.c:
|
||||
* source/rtl/natmsg/msgr1251.c:
|
||||
* source/rtl/natmsg/msgru866.c:
|
||||
* source/rtl/natmsg/msgspa.c:
|
||||
* source/rtl/natmsg/msguk.c:
|
||||
Added Id keywords.
|
||||
|
||||
* config/bin.cf:
|
||||
* config/global.cf:
|
||||
* config/header.cf:
|
||||
* config/lib.cf:
|
||||
* config/prg.cf:
|
||||
* config/test.cf:
|
||||
* config/win32/rules.cf:
|
||||
Use GRANDP to refer to ../../ and change environment variables to
|
||||
start with a HB_.
|
||||
* source/rtl/dir.c:
|
||||
This file had definite bugs, see difference between r1.4 and r1.3
|
||||
for more details.
|
||||
|
||||
* config/win32/rules.cf:
|
||||
Added a -I$(TOP) to the list of paths for included files in the
|
||||
rule to compile a PRG file with Harbour.
|
||||
* source/rtl/natmsg/msgdut.c:
|
||||
* source/rtl/natmsg/msggal.c:
|
||||
* source/rtl/natmsg/msgger.c:
|
||||
* source/rtl/natmsg/msghu.c:
|
||||
* source/rtl/natmsg/msgpor.c:
|
||||
* source/rtl/natmsg/msgr1251.c:
|
||||
* source/rtl/natmsg/msgru866.c:
|
||||
* source/rtl/natmsg/msgspa.c:
|
||||
* source/rtl/natmsg/msguk.c:
|
||||
Added Id keywords.
|
||||
|
||||
* include/Makefile:
|
||||
* source/Makefile:
|
||||
* source/rtl/Makefile:
|
||||
* source/tools/Makefile:
|
||||
* tests/working/Makefile:
|
||||
Updated the file list.
|
||||
* config/bin.cf:
|
||||
* config/global.cf:
|
||||
* config/header.cf:
|
||||
* config/lib.cf:
|
||||
* config/prg.cf:
|
||||
* config/test.cf:
|
||||
* config/win32/rules.cf:
|
||||
Use GRANDP to refer to ../../ and change environment variables to
|
||||
start with a HB_.
|
||||
|
||||
* config/win32/rules.cf:
|
||||
Added a -I$(TOP) to the list of paths for included files in the
|
||||
rule to compile a PRG file with Harbour.
|
||||
|
||||
* include/Makefile:
|
||||
* source/Makefile:
|
||||
* source/rtl/Makefile:
|
||||
* source/tools/Makefile:
|
||||
* tests/working/Makefile:
|
||||
Updated the file list.
|
||||
|
||||
19990607-15:15 CET Matthew Hamilton
|
||||
* tests/working/inifiles.prg
|
||||
|
||||
@@ -2,16 +2,11 @@
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#if defined(__DJGPP__)
|
||||
#ifndef __dj_include_stdio_h_
|
||||
#include <alloc.h>
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(__DJGPP__) || defined(__GNUC__)
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#else
|
||||
#include <alloc.h>
|
||||
#include <mem.h>
|
||||
#endif
|
||||
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
/* Harbour Preprocessor , version 0.8
|
||||
/* Harbour Preprocessor , version 0.9
|
||||
author - Alexander Kresin */
|
||||
|
||||
#if defined(__DJGPP__) || defined(__GNUC__)
|
||||
@@ -16,6 +15,7 @@
|
||||
#include <stdio.h>
|
||||
#include <io.h>
|
||||
#include <fcntl.h>
|
||||
#include <sys\stat.h>
|
||||
#include <ctype.h>
|
||||
#include "harb.h"
|
||||
|
||||
@@ -29,10 +29,11 @@ typedef struct
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int com_or_xcom;
|
||||
char *name;
|
||||
char *mpatt;
|
||||
char *value;
|
||||
} COMMANDS;
|
||||
} COMMANDS, TRANSLATES;
|
||||
|
||||
int Hp_Parse( int, int );
|
||||
int ParseDirective( char* );
|
||||
@@ -40,19 +41,24 @@ int ParseDefine( char* );
|
||||
DEFINES* AddDefine ( char* );
|
||||
int ParseUndef( char* );
|
||||
int ParseIfdef( char*, int);
|
||||
int ParseCommand( char* );
|
||||
int ParseCommand( char*, int, int );
|
||||
int ConvertPatterns ( char*, int, char*, int );
|
||||
void AddCommand ( char * );
|
||||
void AddTranslate ( char * );
|
||||
COMMANDS* getCommand ( int );
|
||||
int ParseExpression( char*, char* );
|
||||
void WorkDefine ( char**, char**, DEFINES*);
|
||||
int WorkCommand ( char*, char*, char**, int);
|
||||
void CmdParse ( char *ptri, int aCmdStru[100][2] );
|
||||
int WorkMarkers( char**, char*, char*, int*, int aCmdStru[100][2], int*, int );
|
||||
int WorkDefine ( char**, char**, DEFINES *, int );
|
||||
void WorkPseudoF ( char**, char**, DEFINES*);
|
||||
int WorkCommand ( char*, char*, char*, int);
|
||||
int CommandStuff ( char *, char *, char *, int*, int );
|
||||
int WorkTranslate ( char*, char**, char*, int);
|
||||
int WorkMarkers( char**, char**, char*, int*, int );
|
||||
int getExpReal ( char *, char **, int );
|
||||
void SkipOptional( char**, char*, int*);
|
||||
|
||||
DEFINES* DefSearch(char *);
|
||||
int ComSearch(char *,int);
|
||||
int TraSearch(char *,int);
|
||||
void SearnRep( char*,char*,int,char*,int*);
|
||||
int ReplacePattern ( char, char*, int, char*, int );
|
||||
int RdStr(int,char *,int,int,char*,int*,int*);
|
||||
@@ -62,9 +68,12 @@ int IsInStr ( char, char*);
|
||||
void Stuff (char*, char*, int, int, int);
|
||||
int strocpy (char*, char* );
|
||||
int stroncpy (char*, char*, int);
|
||||
int strocmp (char*, char**);
|
||||
int strincpy (char*, char*);
|
||||
int strincmp (char*, char**);
|
||||
int strolen ( char* );
|
||||
int strotrim ( char* );
|
||||
char* strodup ( char * );
|
||||
int idDrag ( char *, char ** );
|
||||
int NextWord ( char**, char*, int);
|
||||
int NextName ( char**, char*, char**);
|
||||
|
||||
@@ -84,7 +93,8 @@ int NextName ( char**, char*, char**);
|
||||
#define STATE_ID_END 5
|
||||
#define STATE_ID 6
|
||||
#define STATE_EXPRES 7
|
||||
#define STATE_BRACKET 8
|
||||
#define STATE_EXPRES_ID 8
|
||||
#define STATE_BRACKET 9
|
||||
|
||||
#define IT_EXPR 1
|
||||
#define IT_ID 2
|
||||
@@ -109,9 +119,12 @@ extern int kolcomm;
|
||||
COMMANDS *aCommnew ;
|
||||
int kolcommands = 0, maxcommands = INITIAL_ACOM_SIZE;
|
||||
|
||||
TRANSLATES *aTranslates ;
|
||||
int koltranslates = 0, maxtranslates = 50;
|
||||
|
||||
int main (int argc,char* argv[])
|
||||
{
|
||||
int handl_i,handl_o;
|
||||
int handl_i,handl_o,i;
|
||||
char szFileName[ _POSIX_PATH_MAX ];
|
||||
FILENAME *pFileName =NULL;
|
||||
|
||||
@@ -121,28 +134,29 @@ FILENAME *pFileName =NULL;
|
||||
pFileName->extension =".prg";
|
||||
MakeFilename( szFileName, pFileName );
|
||||
|
||||
if ((handl_i = open(szFileName, O_RDONLY | O_TEXT)) == -1)
|
||||
if ((handl_i = open(szFileName, O_TEXT)) == -1)
|
||||
{ printf("Can't open %s",szFileName); return 1; }
|
||||
|
||||
pFileName->extension =".ppo";
|
||||
MakeFilename( szFileName, pFileName );
|
||||
if ((handl_o = open(szFileName, O_CREAT | O_WRONLY | O_TEXT)) == -1)
|
||||
if ((handl_o = open(szFileName, O_CREAT | O_TRUNC | O_WRONLY | O_TEXT , S_IREAD | S_IWRITE)) == -1)
|
||||
{ printf("Can't open %s",szFileName); return 1; }
|
||||
|
||||
aCondCompile = (int*) _xgrab( sizeof(int) * 5 );
|
||||
aDefnew = ( DEFINES * ) _xgrab( sizeof(DEFINES) * 50 );
|
||||
aCommnew = ( COMMANDS * ) _xgrab( sizeof(COMMANDS) * INITIAL_ACOM_SIZE );
|
||||
aTranslates = ( TRANSLATES * ) _xgrab( sizeof(TRANSLATES) * 50 );
|
||||
|
||||
Hp_Parse(handl_i,handl_o);
|
||||
close(handl_i); close(handl_o);
|
||||
/*
|
||||
for (i=0;i<kolcommands;i++)
|
||||
{
|
||||
printf("\n\"%s\",",aCommands[i].name);
|
||||
if (aCommands[i].mpatt !=NULL) printf("\"%s\",",aCommands[i].mpatt);
|
||||
printf("\n{%d,\"%s\",",aCommnew[i].com_or_xcom, aCommands[i].name);
|
||||
if (aCommnew[i].mpatt !=NULL) printf("\"%s\",",aCommnew[i].mpatt);
|
||||
else printf("NULL,");
|
||||
if (aCommands[i].value !=NULL) printf("\n\"%s\",",aCommands[i].value);
|
||||
else printf("\nNULL,");
|
||||
if (aCommnew[i].value !=NULL) printf("\n\"%s\"},",aCommnew[i].value);
|
||||
else printf("\nNULL},");
|
||||
}
|
||||
*/
|
||||
return 0;
|
||||
@@ -242,7 +256,7 @@ int ParseDirective( char* sLine )
|
||||
{ printf("\nCan't open %s",sLine); return 1001; }
|
||||
|
||||
lInclude++;
|
||||
Hp_Parse(handl_i, 0);
|
||||
Hp_Parse(handl_i, NULL);
|
||||
lInclude--;
|
||||
close(handl_i);
|
||||
}
|
||||
@@ -261,12 +275,13 @@ int ParseDirective( char* sLine )
|
||||
|
||||
else if ( (i == 7 && memcmp ( sDirective, "command", 7 ) == 0) ||
|
||||
(i == 8 && memcmp ( sDirective, "xcommand", 8 ) == 0) )
|
||||
ParseCommand ( sLine ); /* --- #command --- */
|
||||
/* --- #command --- */
|
||||
ParseCommand ( sLine, (i==7)? FALSE:TRUE, TRUE );
|
||||
|
||||
else if ( (i == 9 && memcmp ( sDirective, "translate", 9 ) == 0) ||
|
||||
(i == 10 && memcmp ( sDirective, "xtranslate", 10 ) == 0) )
|
||||
{ /* --- #translate --- */
|
||||
}
|
||||
/* --- #translate --- */
|
||||
ParseCommand ( sLine, (i==9)? FALSE:TRUE, FALSE );
|
||||
|
||||
else if ( i == 6 && memcmp ( sDirective, "stdout", 6 ) == 0 )
|
||||
printf ( "%s", sLine ); /* --- #stdout --- */
|
||||
@@ -411,21 +426,43 @@ int ComSearch(char *cmdname, int ncmd)
|
||||
if ( !ncmd || ncmd > kolcomm )
|
||||
for ( i=(ncmd)? ncmd-kolcomm:kolcommands-1; i >= 0; i-- )
|
||||
{
|
||||
for ( j=0; *(aCommnew[i].name+j)==toupper(*(cmdname+j)) &&
|
||||
*(aCommnew[i].name+j)!='\0'; j++ );
|
||||
if ( *(aCommnew[i].name+j)==toupper(*(cmdname+j)) ) return kolcomm+i;
|
||||
for ( j=0; (*(aCommnew[i].name+j)==toupper(*(cmdname+j))) &&
|
||||
(*(aCommnew[i].name+j)!='\0') &&
|
||||
((aCommnew[i].com_or_xcom)? 1:(j<4)); j++ );
|
||||
if ( (*(aCommnew[i].name+j)==toupper(*(cmdname+j))) ||
|
||||
( !aCommnew[i].com_or_xcom && j == 4 && *(aCommnew[i].name+j)!='\0') )
|
||||
return kolcomm+i;
|
||||
}
|
||||
|
||||
for ( i=(ncmd && ncmd<=kolcomm)? ncmd:kolcomm-1; i >= 0; i-- )
|
||||
{
|
||||
for ( j=0; *(aCommands[i].name+j)==toupper(*(cmdname+j)) &&
|
||||
*(aCommands[i].name+j)!='\0'; j++ );
|
||||
if ( *(aCommands[i].name+j)==toupper(*(cmdname+j)) ) break;
|
||||
for ( j=0; (*(aCommands[i].name+j)==toupper(*(cmdname+j))) &&
|
||||
(*(aCommands[i].name+j)!='\0') &&
|
||||
((aCommands[i].com_or_xcom)? 1:(j<4)); j++ );
|
||||
if ( (*(aCommands[i].name+j)==toupper(*(cmdname+j))) ||
|
||||
( !aCommands[i].com_or_xcom && j == 4 && *(aCommands[i].name+j)!='\0') )
|
||||
break;
|
||||
}
|
||||
return i;
|
||||
}
|
||||
|
||||
int ParseCommand( char* sLine)
|
||||
int TraSearch(char *cmdname, int ncmd)
|
||||
{
|
||||
int i,j;
|
||||
|
||||
for ( i=(ncmd)? ncmd:koltranslates-1; i >= 0; i-- )
|
||||
{
|
||||
for ( j=0; *(aTranslates[i].name+j)==toupper(*(cmdname+j)) &&
|
||||
*(aTranslates[i].name+j)!='\0' &&
|
||||
((aTranslates[i].com_or_xcom)? 1:(j<4)); j++ );
|
||||
if ( *(aTranslates[i].name+j)==toupper(*(cmdname+j)) ||
|
||||
( !aTranslates[i].com_or_xcom && j == 4 && *(aTranslates[i].name+j)!='\0') )
|
||||
break;
|
||||
}
|
||||
return i;
|
||||
}
|
||||
|
||||
int ParseCommand( char* sLine, int com_or_xcom, int com_or_tra )
|
||||
{
|
||||
char cmdname[MAX_NAME];
|
||||
char mpatt[STR_SIZE], rpatt[STR_SIZE];
|
||||
@@ -438,16 +475,29 @@ int ParseCommand( char* sLine)
|
||||
if ( (ipos = hb_strAt( "=>", 2, sLine, strolen(sLine) )) > 0 )
|
||||
mlen = stroncpy( mpatt, sLine, ipos-1 );
|
||||
else return 4000; /* Quit, if '=>' absent */
|
||||
mlen = strotrim( mpatt );
|
||||
|
||||
sLine += ipos + 1;
|
||||
SKIPTABSPACES(sLine);
|
||||
rlen = strocpy( rpatt, sLine );
|
||||
rlen = strotrim( rpatt );
|
||||
|
||||
if ( (rez = ConvertPatterns ( mpatt, mlen, rpatt, rlen )) > 0 ) return rez;
|
||||
|
||||
AddCommand ( cmdname );
|
||||
aCommnew[kolcommands-1].mpatt = strodup ( mpatt );
|
||||
aCommnew[kolcommands-1].value = ( rlen > 0 )? strodup ( rpatt ) : NULL;
|
||||
if ( com_or_tra )
|
||||
{
|
||||
AddCommand ( cmdname );
|
||||
aCommnew[kolcommands-1].com_or_xcom = com_or_xcom;
|
||||
aCommnew[kolcommands-1].mpatt = strodup ( mpatt );
|
||||
aCommnew[kolcommands-1].value = ( rlen > 0 )? strodup ( rpatt ) : NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
AddTranslate ( cmdname );
|
||||
aTranslates[koltranslates-1].com_or_xcom = com_or_xcom;
|
||||
aTranslates[koltranslates-1].mpatt = strodup ( mpatt );
|
||||
aTranslates[koltranslates-1].value = ( rlen > 0 )? strodup ( rpatt ) : NULL;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -531,6 +581,17 @@ void AddCommand ( char *cmdname )
|
||||
kolcommands++;
|
||||
}
|
||||
|
||||
void AddTranslate ( char *cmdname )
|
||||
{
|
||||
if ( koltranslates == maxtranslates )
|
||||
{
|
||||
maxtranslates += 50;
|
||||
aTranslates = (TRANSLATES *)_xrealloc( aTranslates, sizeof( TRANSLATES ) * maxtranslates );
|
||||
}
|
||||
aTranslates[koltranslates].name = strodup ( cmdname );
|
||||
koltranslates++;
|
||||
}
|
||||
|
||||
COMMANDS* getCommand ( int ndef )
|
||||
{
|
||||
return (ndef>=kolcomm)? &(aCommnew[ndef-kolcomm]):&(aCommands[ndef]);
|
||||
@@ -540,11 +601,12 @@ int ParseExpression( char* sLine, char* sOutLine )
|
||||
{
|
||||
char sToken[MAX_NAME];
|
||||
char *ptri, *ptro;
|
||||
int lenToken,npars,i,ndef;
|
||||
int lenToken,i,ndef;
|
||||
int rezDef, rezCom, kolpass = 0;
|
||||
int kolused = 0, lastused;
|
||||
DEFINES *aUsed[100], *stdef;
|
||||
|
||||
strotrim ( sLine );
|
||||
do
|
||||
{
|
||||
ptri = sLine; ptro = sOutLine;
|
||||
@@ -554,53 +616,31 @@ int ParseExpression( char* sLine, char* sOutLine )
|
||||
while ( ( lenToken = NextName(&ptri, sToken, &ptro) ) > 0 )
|
||||
if ( (stdef=DefSearch(sToken)) != NULL )
|
||||
{
|
||||
for(i=0;i<kolused;i++) if ( aUsed[i] == stdef ) break;
|
||||
if ( i < kolused ) { if ( i < lastused ) return 1000; }
|
||||
else
|
||||
aUsed[kolused++] = stdef;
|
||||
if ( stdef->pars == NULL )
|
||||
{
|
||||
rezDef = 1;
|
||||
ptro -= lenToken;
|
||||
lenToken = 0;
|
||||
while ( *(stdef->value+lenToken) != '\0' )
|
||||
*ptro++ = *(stdef->value+lenToken++);
|
||||
}
|
||||
else
|
||||
{
|
||||
SKIPTABSPACES( ptri );
|
||||
if ( *ptri == '(' )
|
||||
{
|
||||
npars=0; i = 0;
|
||||
while ( *(ptri+i) != ')' && *(ptri+i) != '\0' )
|
||||
{
|
||||
if ( *(ptri+i) == ',' ) npars++;
|
||||
i++;
|
||||
}
|
||||
if ( stdef->npars == npars + 1 )
|
||||
{
|
||||
rezDef = 1;
|
||||
ptro -= lenToken;
|
||||
WorkDefine( &ptri, &ptro, stdef );
|
||||
}
|
||||
}
|
||||
else *ptro++ = ' ';
|
||||
}
|
||||
for(i=0;i<kolused;i++) if ( aUsed[i] == stdef ) break;
|
||||
if ( i < kolused ) { if ( i < lastused ) return 1000; }
|
||||
else
|
||||
aUsed[kolused++] = stdef;
|
||||
rezDef += WorkDefine ( &ptri, &ptro, stdef, lenToken );
|
||||
}
|
||||
*ptro = '\0';
|
||||
memcpy ( sLine, sOutLine, ptro - sOutLine + 1);
|
||||
|
||||
/* Look for definitions from #translate */
|
||||
ptri = sLine; ptro = sOutLine;
|
||||
while ( ( lenToken = NextName(&ptri, sToken, &ptro) ) > 0 )
|
||||
if ( (ndef=TraSearch(sToken,0)) >= 0 )
|
||||
WorkTranslate( sToken, &ptri, ptro, ndef );
|
||||
|
||||
/* Look for definitions from #command */
|
||||
if ( !kolpass )
|
||||
{
|
||||
ptri = sLine; ptro = sOutLine;
|
||||
// lenToken = NextWord( &ptri, sToken, FALSE);
|
||||
SKIPTABSPACES( ptri );
|
||||
if ( isname(*ptri) ) lenToken = NextName( &ptri, sToken, NULL);
|
||||
else { *sToken = *ptri++; *(sToken+1) = '\0'; lenToken = 1; }
|
||||
if ( (ndef=ComSearch(sToken,0)) >= 0 )
|
||||
{
|
||||
if ( (i = WorkCommand( sToken, ptri, &ptro, ndef )) > 0 )
|
||||
if ( (i = WorkCommand( sToken, ptri, ptro, ndef )) > 0 )
|
||||
memcpy ( sLine, sOutLine, i+1);
|
||||
rezCom = 1;
|
||||
}
|
||||
@@ -612,7 +652,41 @@ int ParseExpression( char* sLine, char* sOutLine )
|
||||
return 0;
|
||||
}
|
||||
|
||||
void WorkDefine ( char** ptri, char** ptro, DEFINES *stdef )
|
||||
int WorkDefine ( char** ptri, char** ptro, DEFINES *stdef, int lenToken )
|
||||
{
|
||||
int rezDef = 0, npars, i;
|
||||
if ( stdef->pars == NULL )
|
||||
{
|
||||
rezDef = 1;
|
||||
*ptro -= lenToken;
|
||||
lenToken = 0;
|
||||
while ( *(stdef->value+lenToken) != '\0' )
|
||||
*(*ptro)++ = *(stdef->value+lenToken++);
|
||||
}
|
||||
else
|
||||
{
|
||||
SKIPTABSPACES( *ptri );
|
||||
if ( **ptri == '(' )
|
||||
{
|
||||
npars=0; i = 0;
|
||||
while ( *(*ptri+i) != ')' && *(*ptri+i) != '\0' )
|
||||
{
|
||||
if ( *(*ptri+i) == ',' ) npars++;
|
||||
i++;
|
||||
}
|
||||
if ( stdef->npars == npars + 1 )
|
||||
{
|
||||
rezDef = 1;
|
||||
*ptro -= lenToken;
|
||||
WorkPseudoF( ptri, ptro, stdef );
|
||||
}
|
||||
}
|
||||
else *(*ptro)++ = ' ';
|
||||
}
|
||||
return rezDef;
|
||||
}
|
||||
|
||||
void WorkPseudoF ( char** ptri, char** ptro, DEFINES *stdef )
|
||||
{
|
||||
char parfict[MAX_NAME], parreal[MAX_NAME];
|
||||
char *ptrb;
|
||||
@@ -668,67 +742,103 @@ void WorkDefine ( char** ptri, char** ptro, DEFINES *stdef )
|
||||
*ptro += lenres;
|
||||
}
|
||||
|
||||
int WorkCommand ( char* sToken, char* ptri, char** ptro, int ndef )
|
||||
int WorkCommand ( char* sToken, char* ptri, char* ptro, int ndef )
|
||||
{
|
||||
int aCmdStru[100][2], iItem;
|
||||
int rez, nbr;
|
||||
int lenres = 0;
|
||||
char *lastopti[2];
|
||||
int rez;
|
||||
int lenres;
|
||||
char *ptrmp;
|
||||
|
||||
/* Copying result pattern to destination string */
|
||||
lenres = strocpy ( *ptro, getCommand(ndef)->value );
|
||||
|
||||
CmdParse ( ptri, aCmdStru ); /* Parse input string */
|
||||
ptrmp = getCommand(ndef)->mpatt; /* Pointer to a match pattern */
|
||||
do
|
||||
{
|
||||
lenres = strocpy ( ptro, getCommand(ndef)->value ); /* Copying result pattern */
|
||||
ptrmp = getCommand(ndef)->mpatt; /* Pointer to a match pattern */
|
||||
Repeate = 0;
|
||||
groupchar = '@';
|
||||
rez = 1; nbr = 0;
|
||||
if ( ptrmp == NULL ) rez = ( aCmdStru[0][0] )? 0:1;
|
||||
rez = CommandStuff ( ptrmp, ptri, ptro, &lenres, TRUE );
|
||||
|
||||
if ( !rez ) ndef = ComSearch(sToken,ndef-1);
|
||||
}
|
||||
while ( !rez && ndef >= 0 );
|
||||
|
||||
*(ptro+lenres) = '\0';
|
||||
if ( rez ) return lenres;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int WorkTranslate ( char* sToken, char** ptri, char* ptro, int ndef )
|
||||
{
|
||||
int rez;
|
||||
int lenres;
|
||||
char *ptrmp;
|
||||
|
||||
do
|
||||
{
|
||||
lenres = strocpy ( ptro, aTranslates[ndef].value );
|
||||
ptrmp = aTranslates[ndef].mpatt;
|
||||
Repeate = 0;
|
||||
groupchar = '@';
|
||||
rez = CommandStuff ( ptrmp, *ptri, ptro, &lenres, FALSE );
|
||||
|
||||
if ( !rez ) ndef = TraSearch(sToken,ndef-1);
|
||||
}
|
||||
while ( !rez && ndef >= 0 );
|
||||
|
||||
*(ptro+lenres) = '\0';
|
||||
if ( rez )
|
||||
{
|
||||
Stuff( ptro, *ptri, lenres, rez, strolen(*ptri) );
|
||||
return lenres;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int CommandStuff ( char *ptrmp, char *inputLine, char * ptro, int *lenres, int com_or_tra )
|
||||
{
|
||||
int nbr = 0, endTranslation = FALSE;
|
||||
char *lastopti[2];
|
||||
char *ptri = inputLine, *ptr;
|
||||
|
||||
if ( ptrmp == NULL ) { if ( *ptri != '\0' ) return 0; }
|
||||
else
|
||||
for ( iItem=1; iItem <= aCmdStru[0][0] && rez; iItem++)
|
||||
while ( *ptri != '\0' && !endTranslation )
|
||||
{
|
||||
SKIPTABSPACES( ptrmp );
|
||||
SKIPTABSPACES( ptri );
|
||||
switch ( *ptrmp ) {
|
||||
case '[':
|
||||
iItem--;
|
||||
nbr++; ptrmp++; lastopti[Repeate] = ptrmp;
|
||||
break;
|
||||
case ']':
|
||||
iItem--;
|
||||
if ( Repeate ) { Repeate--; ptrmp = lastopti[Repeate]; }
|
||||
else { nbr--; ptrmp++; }
|
||||
break;
|
||||
case ',':
|
||||
if ( aCmdStru[iItem][1] == IT_COMMA ) ptrmp++;
|
||||
if ( *ptri == ',' ) { ptrmp++; ptri++; }
|
||||
else
|
||||
{
|
||||
if ( nbr ) { SkipOptional( &ptrmp, *ptro, &lenres); iItem--; }
|
||||
else rez = 0;
|
||||
if ( nbr ) { SkipOptional( &ptrmp, ptro, lenres); }
|
||||
else return 0;
|
||||
}
|
||||
break;
|
||||
case '\1': /* Match marker */
|
||||
rez = WorkMarkers( &ptrmp, ptri, *ptro, &lenres, aCmdStru, &iItem, nbr );
|
||||
if ( !WorkMarkers( &ptrmp, &ptri, ptro, lenres, nbr ) )
|
||||
return 0;
|
||||
break;
|
||||
case '\0':
|
||||
rez = 0;
|
||||
break;
|
||||
if ( com_or_tra ) return 0; else endTranslation = TRUE;
|
||||
default: /* Key word */
|
||||
if ( aCmdStru[iItem][1] == IT_COMMA ||
|
||||
strocmp(ptri + aCmdStru[iItem][0], &ptrmp ) )
|
||||
ptr = ptrmp;
|
||||
if ( *ptri == ',' || strincmp(ptri, &ptrmp ) )
|
||||
{
|
||||
if ( nbr ) { SkipOptional( &ptrmp, *ptro, &lenres); iItem--; }
|
||||
else rez = 0;
|
||||
if ( nbr ) { SkipOptional( &ptrmp, ptro, lenres); }
|
||||
else return 0;
|
||||
}
|
||||
else if ( *ptri != ',' ) ptri += (ptrmp - ptr);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
if ( rez && ptrmp != NULL)
|
||||
if ( ptrmp != NULL )
|
||||
{
|
||||
SKIPTABSPACES( ptrmp );
|
||||
if ( *ptrmp == ']' ) { ptrmp++; nbr--; }
|
||||
if ( Repeate ) { Repeate = 0; ptrmp = lastopti[0] - 1; }
|
||||
do
|
||||
{
|
||||
@@ -737,184 +847,67 @@ int WorkCommand ( char* sToken, char* ptri, char** ptro, int ndef )
|
||||
switch ( *ptrmp ) {
|
||||
case '[':
|
||||
ptrmp++;
|
||||
SkipOptional( &ptrmp, *ptro, &lenres);
|
||||
SkipOptional( &ptrmp, ptro, lenres);
|
||||
ptrmp++;
|
||||
break;
|
||||
case ']': ptrmp++; break;
|
||||
default:
|
||||
rez = 0;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
while ( *ptrmp != '\0' && rez );
|
||||
while ( *ptrmp != '\0' );
|
||||
}
|
||||
|
||||
if ( !rez && (ndef = ComSearch(sToken,ndef-1))>=0 )
|
||||
{
|
||||
ptrmp = getCommand(ndef)->mpatt; /* Pointer to a match pattern */
|
||||
/* Copying result pattern to destination string */
|
||||
lenres = strocpy ( *ptro, getCommand(ndef)->value );
|
||||
}
|
||||
}
|
||||
while ( !rez && ndef >= 0 );
|
||||
|
||||
*(*ptro+lenres) = '\0';
|
||||
if ( rez ) return lenres;
|
||||
return 0;
|
||||
if ( com_or_tra ) return 1; else return (ptri-inputLine);
|
||||
}
|
||||
|
||||
void CmdParse ( char *ptri, int aCmdStru[100][2] )
|
||||
int WorkMarkers( char **ptrmp, char **ptri, char *ptro, int *lenres, int nbr )
|
||||
{
|
||||
char *sZnaki = "+-=><*/$";
|
||||
int State = State = STATE_ID_END, StBr1 = 0, StBr2 = 0, StBr3 = 0;
|
||||
int i = 0;
|
||||
|
||||
aCmdStru[0][0] = 0;
|
||||
while ( *ptri != '\0' )
|
||||
{
|
||||
switch ( State ) {
|
||||
case STATE_QUOTE1:
|
||||
if(*ptri=='\'')
|
||||
State = (StBr1==0 && StBr2==0 && StBr3==0)? STATE_ID_END:STATE_BRACKET;
|
||||
break;
|
||||
case STATE_QUOTE2:
|
||||
if(*ptri=='\"')
|
||||
State = (StBr1==0 && StBr2==0 && StBr3==0)? STATE_ID_END:STATE_BRACKET;
|
||||
break;
|
||||
case STATE_BRACKET:
|
||||
if ( *ptri == '\'' ) State = STATE_QUOTE1;
|
||||
else if ( *ptri == '\"' ) State = STATE_QUOTE2;
|
||||
else if ( *ptri == '(' ) StBr1++;
|
||||
else if ( *ptri == '[' ) StBr2++;
|
||||
else if ( *ptri == '{' ) StBr3++;
|
||||
else if ( *ptri == ')' )
|
||||
{ StBr1--; if (StBr1==0 && StBr2==0 && StBr3==0) State = STATE_ID_END; }
|
||||
else if ( *ptri == ']' )
|
||||
{ StBr2--; if (StBr1==0 && StBr2==0 && StBr3==0) State = STATE_ID_END; }
|
||||
else if ( *ptri == '}' )
|
||||
{ StBr3--; if (StBr1==0 && StBr2==0 && StBr3==0) State = STATE_ID_END; }
|
||||
break;
|
||||
case STATE_ID:
|
||||
case STATE_ID_END:
|
||||
if ( ( (isname(*ptri) || *ptri=='\\') && State == STATE_ID_END ) ||
|
||||
*ptri==',' || *ptri=='\'' || *ptri=='\"')
|
||||
{
|
||||
if ( !aCmdStru[ aCmdStru[0][0] ][1] ) aCmdStru[ aCmdStru[0][0] ][1] = IT_ID;
|
||||
State = STATE_ID;
|
||||
aCmdStru[0][0]++;
|
||||
aCmdStru[ aCmdStru[0][0] ][0] = i;
|
||||
if ( *ptri == ',' )
|
||||
{
|
||||
State = STATE_ID_END;
|
||||
aCmdStru[ aCmdStru[0][0] ][1] = IT_COMMA;
|
||||
}
|
||||
else if ( *ptri == '\'' )
|
||||
{
|
||||
State = STATE_QUOTE1;
|
||||
aCmdStru[ aCmdStru[0][0] ][1] = IT_EXPR;
|
||||
}
|
||||
else if ( *ptri == '\"' )
|
||||
{
|
||||
State = STATE_QUOTE2;
|
||||
aCmdStru[ aCmdStru[0][0] ][1] = IT_EXPR;
|
||||
}
|
||||
else
|
||||
{
|
||||
State = STATE_ID;
|
||||
if ( isdigit(*ptri) ) aCmdStru[ aCmdStru[0][0] ][1] = IT_EXPR;
|
||||
else aCmdStru[ aCmdStru[0][0] ][1] = 0;
|
||||
}
|
||||
}
|
||||
else if ( IsInStr( *ptri, sZnaki ) ) State = STATE_EXPRES;
|
||||
else if ( *ptri == '(' )
|
||||
{
|
||||
State = STATE_BRACKET;
|
||||
StBr1 = 1;
|
||||
aCmdStru[ aCmdStru[0][0] ][1] = IT_ID_OR_EXPR;
|
||||
aCmdStru[0][0]++;
|
||||
aCmdStru[ aCmdStru[0][0] ][0] = i;
|
||||
aCmdStru[ aCmdStru[0][0] ][1] = IT_EXPR;
|
||||
}
|
||||
else if ( *ptri == '[' )
|
||||
{
|
||||
State = STATE_BRACKET;
|
||||
StBr2 = 1;
|
||||
aCmdStru[ aCmdStru[0][0] ][1] = IT_EXPR;
|
||||
}
|
||||
else if ( *ptri == '{' )
|
||||
{
|
||||
State = STATE_BRACKET;
|
||||
StBr3 = 1;
|
||||
aCmdStru[ aCmdStru[0][0] ][1] = IT_ID;
|
||||
aCmdStru[0][0]++;
|
||||
aCmdStru[ aCmdStru[0][0] ][0] = i;
|
||||
aCmdStru[ aCmdStru[0][0] ][1] = IT_EXPR;
|
||||
}
|
||||
else if ( *ptri == ' ' ) State = STATE_ID_END;
|
||||
break;
|
||||
case STATE_EXPRES:
|
||||
aCmdStru[ aCmdStru[0][0] ][1] = IT_EXPR;
|
||||
if ( *ptri == '\'' ) State = STATE_QUOTE1;
|
||||
else if ( *ptri == '\"' ) State = STATE_QUOTE2;
|
||||
else if ( isname(*ptri) ) State = STATE_ID;
|
||||
else if ( *ptri == '(' ) { StBr1++; State = STATE_BRACKET; }
|
||||
else if ( *ptri == '[' ) { StBr2++; State = STATE_BRACKET; }
|
||||
else if ( *ptri == '{' ) { StBr3++; State = STATE_BRACKET; }
|
||||
break;
|
||||
}
|
||||
ptri++; i++;
|
||||
}
|
||||
if ( aCmdStru[0][0] && !aCmdStru[ aCmdStru[0][0] ][1] )
|
||||
aCmdStru[ aCmdStru[0][0] ][1] = IT_ID;
|
||||
aCmdStru[ aCmdStru[0][0]+1 ][0] = i;
|
||||
}
|
||||
|
||||
int WorkMarkers( char **ptrmp, char *ptri, char *ptro, int *lenres, int aCmdStru[100][2], int *iItem, int nbr )
|
||||
{
|
||||
int ifiItem;
|
||||
char expreal[MAX_NAME], exppatt[MAX_NAME];
|
||||
int lenreal, lenpatt;
|
||||
int rezrestr,i;
|
||||
char *ptr;
|
||||
int lenreal = 0, lenpatt;
|
||||
int rezrestr, i, ipos;
|
||||
char *ptr, *ptrtemp;
|
||||
|
||||
if ( aCmdStru[*iItem][1] == IT_COMMA ) return 0;
|
||||
if ( **ptri == ',' ) return 0;
|
||||
/* Copying a match pattern to 'exppatt' */
|
||||
lenpatt = stroncpy ( exppatt, *ptrmp, 4 );
|
||||
*ptrmp += 4;
|
||||
SKIPTABSPACES ( *ptrmp );
|
||||
if ( !isname( ** ptrmp ) && **ptrmp != '\1' && **ptrmp != ',' &&
|
||||
**ptrmp != '[' && **ptrmp != ']' && **ptrmp != '\0' )
|
||||
{
|
||||
lenreal = strincpy ( expreal, *ptrmp );
|
||||
if ( (ipos = hb_strAt( expreal, lenreal, *ptri, strolen(*ptri) )) > 0 )
|
||||
{
|
||||
lenreal = stroncpy( expreal, *ptri, ipos-1 );
|
||||
*ptri += lenreal;
|
||||
}
|
||||
else return 0;
|
||||
}
|
||||
|
||||
ifiItem = *iItem;
|
||||
if ( aCmdStru[ifiItem][1] == IT_ID_OR_EXPR ) (*iItem)++;
|
||||
if ( *(exppatt+2) == '4' ) /* ---- extended match marker */
|
||||
{
|
||||
/* Copying a real expression to 'expreal' */
|
||||
lenreal = stroncpy ( expreal, ptri + aCmdStru[ifiItem][0],
|
||||
aCmdStru[*iItem+1][0]-aCmdStru[ifiItem][0] );
|
||||
if ( !lenreal ) lenreal = getExpReal ( expreal, ptri, FALSE );
|
||||
SearnRep( exppatt,expreal,lenreal,ptro,lenres);
|
||||
}
|
||||
else if ( *(exppatt+2) == '3' ) /* ---- wild match marker */
|
||||
{
|
||||
*iItem = aCmdStru[0][0];
|
||||
/* Copying a real expression to 'expreal' */
|
||||
lenreal = stroncpy ( expreal, ptri + aCmdStru[ifiItem][0],
|
||||
aCmdStru[*iItem+1][0]-aCmdStru[ifiItem][0] );
|
||||
lenreal = strocpy ( expreal, *ptri );
|
||||
*ptri += lenreal;
|
||||
SearnRep( exppatt,expreal,lenreal,ptro,lenres);
|
||||
}
|
||||
else if ( *(exppatt+2) == '2' ) /* ---- restricted match marker */
|
||||
{
|
||||
while ( **ptrmp != '>' && **ptrmp!= '\0' ) *(exppatt+lenpatt++) = *((*ptrmp)++);
|
||||
*(exppatt+lenpatt++) = '>';
|
||||
while ( **ptrmp != '>' ) *(exppatt+lenpatt++) = *((*ptrmp)++);
|
||||
*(exppatt+lenpatt) = '\0';
|
||||
(*ptrmp)++;
|
||||
/* Copying a real expression to 'expreal' */
|
||||
lenreal = stroncpy ( expreal, ptri + aCmdStru[ifiItem][0],
|
||||
aCmdStru[*iItem+1][0]-aCmdStru[ifiItem][0] );
|
||||
|
||||
ptr = exppatt + 4;
|
||||
rezrestr = 0;
|
||||
while ( *ptr != '>' )
|
||||
while ( *ptr != '\0' )
|
||||
{
|
||||
if ( *ptr == '&' )
|
||||
{
|
||||
if ( *expreal == '&' )
|
||||
if ( **ptri == '&' )
|
||||
{
|
||||
rezrestr = 1;
|
||||
break;
|
||||
@@ -925,49 +918,134 @@ int WorkMarkers( char **ptrmp, char *ptri, char *ptro, int *lenres, int aCmdStru
|
||||
{
|
||||
SKIPTABSPACES( ptr );
|
||||
/* Comparing real parameter and restriction value */
|
||||
for ( i=0; toupper(*ptr) == toupper(*(expreal+i)) && *ptr != ','
|
||||
&& *ptr != '>' && i < lenreal; i++,ptr++ );
|
||||
if ( i == lenreal || *ptr == ',' || *ptr == '>' )
|
||||
ptrtemp = ptr;
|
||||
if ( !strincmp ( *ptri, &ptr ) )
|
||||
{
|
||||
lenreal = stroncpy( expreal, *ptri, (ptr-ptrtemp) );
|
||||
*ptri += lenreal;
|
||||
SearnRep( exppatt,expreal,lenreal,ptro,lenres);
|
||||
rezrestr = 1;
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
while ( *ptr != ',' && *ptr != '>' ) ptr++;
|
||||
while ( *ptr != ',' && *ptr != '\0' ) ptr++;
|
||||
if ( *ptr == ',' ) ptr++;
|
||||
}
|
||||
}
|
||||
}
|
||||
if ( rezrestr == 0 )
|
||||
{ /* If restricted match marker doesn't correspond to real parameter */
|
||||
if ( nbr )
|
||||
{
|
||||
SearnRep( exppatt,"",0,ptro,lenres);
|
||||
(*iItem)--; /* if was optional, go to the next */
|
||||
}
|
||||
if ( nbr ) SearnRep( exppatt,"",0,ptro,lenres);
|
||||
else return 0;
|
||||
}
|
||||
}
|
||||
else if ( *(exppatt+2) == '1' ) /* ---- list match marker */
|
||||
{
|
||||
while ( *iItem < aCmdStru[0][0] && aCmdStru[*iItem+1][1] == IT_COMMA ) *iItem+=2;
|
||||
/* Copying a real expression to 'expreal' */
|
||||
lenreal = stroncpy ( expreal, ptri + aCmdStru[ifiItem][0],
|
||||
aCmdStru[*iItem+1][0]-aCmdStru[ifiItem][0] );
|
||||
if ( !lenreal ) lenreal = getExpReal ( expreal, ptri, TRUE );
|
||||
SearnRep( exppatt,expreal,lenreal,ptro,lenres);
|
||||
}
|
||||
else /* ---- regular match marker */
|
||||
{
|
||||
/* Copying a real expression to 'expreal' */
|
||||
lenreal = stroncpy ( expreal, ptri + aCmdStru[ifiItem][0],
|
||||
aCmdStru[*iItem+1][0]-aCmdStru[ifiItem][0] );
|
||||
if ( !lenreal ) lenreal = getExpReal ( expreal, ptri, FALSE );
|
||||
SearnRep( exppatt,expreal,lenreal,ptro,lenres);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
int getExpReal ( char *expreal, char **ptri, int prlist )
|
||||
{
|
||||
int lens = 0;
|
||||
char *sZnaki = "+-=><*/$.&:";
|
||||
int State;
|
||||
int StBr1 = 0, StBr2 = 0, StBr3 = 0;
|
||||
int rez = 0;
|
||||
|
||||
SKIPTABSPACES ( *ptri );
|
||||
State = (**ptri=='\'' || **ptri=='\"')? STATE_EXPRES:STATE_ID;
|
||||
while ( **ptri != '\0' && !rez )
|
||||
{
|
||||
switch ( State ) {
|
||||
case STATE_QUOTE1:
|
||||
if(**ptri=='\'')
|
||||
State = (StBr1==0 && StBr2==0 && StBr3==0)? STATE_ID_END:STATE_BRACKET;
|
||||
break;
|
||||
case STATE_QUOTE2:
|
||||
if(**ptri=='\"')
|
||||
State = (StBr1==0 && StBr2==0 && StBr3==0)? STATE_ID_END:STATE_BRACKET;
|
||||
break;
|
||||
case STATE_BRACKET:
|
||||
if ( **ptri == '\'' ) State = STATE_QUOTE1;
|
||||
else if ( **ptri == '\"' ) State = STATE_QUOTE2;
|
||||
else if ( **ptri == '(' ) StBr1++;
|
||||
else if ( **ptri == '[' ) StBr2++;
|
||||
else if ( **ptri == '{' ) StBr3++;
|
||||
else if ( **ptri == ')' )
|
||||
{ StBr1--; if (StBr1==0 && StBr2==0 && StBr3==0) State = STATE_ID_END; }
|
||||
else if ( **ptri == ']' )
|
||||
{ StBr2--; if (StBr1==0 && StBr2==0 && StBr3==0) State = STATE_ID_END; }
|
||||
else if ( **ptri == '}' )
|
||||
{ StBr3--; if (StBr1==0 && StBr2==0 && StBr3==0) State = STATE_ID_END; }
|
||||
break;
|
||||
case STATE_ID:
|
||||
case STATE_ID_END:
|
||||
if ( ( (isname(**ptri) || **ptri=='\\') && State == STATE_ID_END ) ||
|
||||
**ptri==',' || **ptri=='\'' || **ptri=='\"')
|
||||
{
|
||||
if ( **ptri == ',' )
|
||||
{
|
||||
if ( !prlist ) rez = 1;
|
||||
State = STATE_EXPRES;
|
||||
}
|
||||
else rez = 1;
|
||||
}
|
||||
else if ( IsInStr( **ptri, sZnaki ) )
|
||||
{
|
||||
State = STATE_EXPRES;
|
||||
}
|
||||
else if ( **ptri == '(' )
|
||||
{
|
||||
State = STATE_BRACKET;
|
||||
StBr1 = 1;
|
||||
}
|
||||
else if ( **ptri == '[' )
|
||||
{
|
||||
State = STATE_BRACKET;
|
||||
StBr2 = 1;
|
||||
}
|
||||
else if ( **ptri == '{' )
|
||||
{
|
||||
State = STATE_BRACKET;
|
||||
StBr3 = 1;
|
||||
}
|
||||
else if ( **ptri == ' ' ) State = STATE_ID_END;
|
||||
break;
|
||||
case STATE_EXPRES:
|
||||
case STATE_EXPRES_ID:
|
||||
if ( **ptri == '\'' ) State = STATE_QUOTE1;
|
||||
else if ( **ptri == '\"' ) State = STATE_QUOTE2;
|
||||
else if ( isname(**ptri) ) State = STATE_EXPRES_ID;
|
||||
else if ( **ptri == ' ' && State == STATE_EXPRES_ID ) State = STATE_ID_END;
|
||||
else if ( **ptri == '(' ) { StBr1++; State = STATE_BRACKET; }
|
||||
else if ( **ptri == '[' ) { StBr2++; State = STATE_BRACKET; }
|
||||
else if ( **ptri == '{' ) { StBr3++; State = STATE_BRACKET; }
|
||||
else if ( **ptri == ',' ) { if ( !prlist ) rez = 1; State = STATE_EXPRES; }
|
||||
else State = STATE_EXPRES;
|
||||
break;
|
||||
}
|
||||
if ( !rez )
|
||||
{
|
||||
*expreal++ = **ptri;
|
||||
(*ptri)++;
|
||||
lens++;
|
||||
}
|
||||
}
|
||||
if ( *(expreal-1) == ' ' ) { expreal--; lens--; };
|
||||
*expreal = '\0';
|
||||
return lens;
|
||||
}
|
||||
|
||||
void SkipOptional( char** ptri, char *ptro, int* lenres)
|
||||
{
|
||||
int nbr = 0;
|
||||
@@ -1177,8 +1255,9 @@ char cha,cLast='\0';
|
||||
}
|
||||
if ( cha != ' ' && cha != '\t' ) State = 1;
|
||||
if( lDropSpaces && State ) lDropSpaces = 0;
|
||||
if(readed<maxlen && (!lDropSpaces || readed==0) &&
|
||||
ParseState != STATE_COMMENT) buffer[readed++]=cha;
|
||||
if( readed<maxlen && (!lDropSpaces || readed==0) &&
|
||||
ParseState != STATE_COMMENT )
|
||||
buffer[readed++]=cha;
|
||||
}
|
||||
while(--readed >= 0 && ( buffer[readed] == ' ' || buffer[readed] == '\t') );
|
||||
readed++;
|
||||
@@ -1198,7 +1277,7 @@ int hb_strAt(char *szSub, int lSubLen, char *szText, int lLen)
|
||||
{
|
||||
if( lSubLen )
|
||||
{
|
||||
if( lLen > lSubLen )
|
||||
if( lLen >= lSubLen )
|
||||
{
|
||||
long lPos = 0, lSubPos = 0;
|
||||
|
||||
@@ -1272,12 +1351,23 @@ int stroncpy (char* ptro, char* ptri, int lens )
|
||||
return i;
|
||||
}
|
||||
|
||||
int strocmp (char* ptro, char** ptri )
|
||||
int strincmp (char* ptro, char** ptri )
|
||||
{
|
||||
for ( ; isname(**ptri) && isname(*ptro) && toupper(**ptri)==toupper(*ptro);
|
||||
for ( ; **ptri != ' ' && **ptri != ',' && **ptri != '[' && **ptri != ']' &&
|
||||
**ptri != '\1' && **ptri != '\0' && toupper(**ptri)==toupper(*ptro);
|
||||
ptro++, (*ptri)++ );
|
||||
if ( toupper(**ptri) != toupper(*ptro) ) return 1;
|
||||
return 0;
|
||||
if ( **ptri == ' ' || **ptri == ',' || **ptri == '[' ||
|
||||
**ptri == ']' || **ptri == '\1' || **ptri == '\0' ) return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
int strincpy (char* ptro, char* ptri )
|
||||
{
|
||||
int lens = 0;
|
||||
for ( ; *ptri != ' ' && *ptri != ',' && *ptri != '[' && *ptri != ']' &&
|
||||
*ptri != '\1' && *ptri != '\0'; ptro++, ptri++, lens++ )
|
||||
*ptro = *ptri;
|
||||
return lens;
|
||||
}
|
||||
|
||||
char* strodup ( char *stroka )
|
||||
@@ -1298,6 +1388,37 @@ int strolen ( char *stroka )
|
||||
return lens;
|
||||
}
|
||||
|
||||
int strotrim ( char *stroka )
|
||||
{
|
||||
char *ptr = stroka, lastc = '0';
|
||||
int lens = 0, State = STATE_NORMAL;
|
||||
while ( *stroka != '\0' )
|
||||
{
|
||||
if ( State == STATE_QUOTE1 ) { if (*stroka == '\'') State = STATE_NORMAL; }
|
||||
else if ( State == STATE_QUOTE2 ) { if (*stroka=='\"') State = STATE_NORMAL; }
|
||||
else
|
||||
if ( (*stroka != ' ' && *stroka != '\t') ||
|
||||
( isname(lastc) && isname(*(stroka+1)) ) )
|
||||
{
|
||||
*ptr++ = *stroka;
|
||||
lastc = *stroka;
|
||||
lens++;
|
||||
}
|
||||
stroka++;
|
||||
}
|
||||
*ptr = '\0';
|
||||
return lens;
|
||||
}
|
||||
|
||||
int idDrag ( char *identif, char **ptri )
|
||||
{
|
||||
int idlen = 0;
|
||||
while ( **ptri != '[' && **ptri != ']' && **ptri != '\1' && **ptri != '\0' )
|
||||
*(identif + idlen++) = *(*ptri)++;
|
||||
do idlen--; while ( *(identif + idlen) == ' ' );
|
||||
return idlen+1;
|
||||
}
|
||||
|
||||
int NextWord ( char** sSource, char* sDest, int lLower )
|
||||
{
|
||||
int i = 0;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
typedef struct
|
||||
@@ -13,10 +13,11 @@ typedef struct
|
||||
} DEFINES;
|
||||
typedef struct
|
||||
{
|
||||
int com_or_xcom;
|
||||
char *name;
|
||||
char *mpatt;
|
||||
char *value;
|
||||
} COMMANDS;
|
||||
} COMMANDS, TRANSLATES;
|
||||
|
||||
int koldef = 41;
|
||||
DEFINES aDefines[] =
|
||||
@@ -67,269 +68,269 @@ DEFINES aDefines[] =
|
||||
int kolcomm = 239;
|
||||
COMMANDS aCommands[] =
|
||||
{
|
||||
{"DO","WHILE \1A00","while \1A00"},
|
||||
{"END","\1A00","end"},
|
||||
{"END","SEQUENCE","end"},
|
||||
{"ENDSEQUENCE","","end"},
|
||||
{"ENDDO","\1A30","enddo"},
|
||||
{"ENDIF","\1A30","endif"},
|
||||
{"ENDCASE","\1A30","endcase"},
|
||||
{"ENDFOR","[ \1A30 ]","next"},
|
||||
{"NEXT","\1A00 [TO \1B00] [STEP \1C00]","next"},
|
||||
{"DO","\1A00.PRG [WITH \1B10]","do \1A00 [ WITH \1B00]"},
|
||||
{"CALL","\1A00() [WITH \1B10]","call \1A00 [ WITH \1B00]"},
|
||||
{"STORE","\1A00 TO \1B00 [, \1C00 ]","\1B00 := [ \1C00 := ] \1A00"},
|
||||
{"SET","ECHO \1A30",NULL},
|
||||
{"SET","HEADING \1A30",NULL},
|
||||
{"SET","MENU \1A30",NULL},
|
||||
{"SET","STATUS \1A30",NULL},
|
||||
{"SET","STEP \1A30",NULL},
|
||||
{"SET","SAFETY \1A30",NULL},
|
||||
{"SET","TALK \1A30",NULL},
|
||||
{"SET","PROCEDURE TO",NULL},
|
||||
{"SET","PROCEDURE TO \1A00","_ProcReq_( \1A30 )"},
|
||||
{"SET","EXACT \1A20ON,OFF,&>","Set( _SET_EXACT, \1A30 )"},
|
||||
{"SET","EXACT (\1A00)","Set( _SET_EXACT, \1A00 )"},
|
||||
{"SET","FIXED \1A20ON,OFF,&>","Set( _SET_FIXED, \1A30 )"},
|
||||
{"SET","FIXED (\1A00)","Set( _SET_FIXED, \1A00 )"},
|
||||
{"SET","DECIMALS TO \1A00","Set( _SET_DECIMALS, \1A00 )"},
|
||||
{"SET","DECIMALS TO","Set( _SET_DECIMALS, 0 )"},
|
||||
{"SET","PATH TO \1A30","Set( _SET_PATH, \1A30 )"},
|
||||
{"SET","PATH TO","Set( _SET_PATH, "" )"},
|
||||
{"SET","DEFAULT TO \1A40","Set( _SET_DEFAULT, \1A30 )"},
|
||||
{"SET","DEFAULT TO","Set( _SET_DEFAULT, "" )"},
|
||||
{"SET","CENTURY \1A20ON,OFF,&>","__SetCentury( \1A30 )"},
|
||||
{"SET","CENTURY (\1A00)","__SetCentury( \1A00 )"},
|
||||
{"SET","EPOCH TO \1A00","Set( _SET_EPOCH, \1A00 )"},
|
||||
{"SET","DATE FORMAT [TO] \1A00","Set( _SET_DATEFORMAT, \1A00 )"},
|
||||
{"SET","DATE [TO] AMERICAN","_DFSET( 'mm/dd/yyyy', 'mm/dd/yy' )"},
|
||||
{"SET","DATE [TO] ANSI","_DFSET( 'yyyy.mm.dd', 'yy.mm.dd' )"},
|
||||
{"SET","DATE [TO] BRITISH","_DFSET( 'dd/mm/yyyy', 'dd/mm/yy' )"},
|
||||
{"SET","DATE [TO] FRENCH","_DFSET( 'dd/mm/yyyy', 'dd/mm/yy' )"},
|
||||
{"SET","DATE [TO] GERMAN","_DFSET( 'dd.mm.yyyy', 'dd.mm.yy' )"},
|
||||
{"SET","DATE [TO] ITALIAN","_DFSET( 'dd-mm-yyyy', 'dd-mm-yy' )"},
|
||||
{"SET","DATE [TO] JAPANESE","_DFSET( 'yyyy/mm/dd', 'yy/mm/dd' )"},
|
||||
{"SET","DATE [TO] USA","_DFSET( 'mm-dd-yyyy', 'mm-dd-yy' )"},
|
||||
{"SET","ALTERNATE \1A20ON,OFF,&>","Set( _SET_ALTERNATE, \1A30 )"},
|
||||
{"SET","ALTERNATE (\1A00)","Set( _SET_ALTERNATE, \1A00 )"},
|
||||
{"SET","ALTERNATE TO","Set( _SET_ALTFILE, "" )"},
|
||||
{"SET","ALTERNATE TO \1A40 [\1B20 ADDITIVE>]","Set( _SET_ALTFILE, \1A30, \1B50 )"},
|
||||
{"SET","CONSOLE \1A20ON,OFF,&>","Set( _SET_CONSOLE, \1A30 )"},
|
||||
{"SET","CONSOLE (\1A00)","Set( _SET_CONSOLE, \1A00 )"},
|
||||
{"SET","MARGIN TO \1A00","Set( _SET_MARGIN, \1A00 )"},
|
||||
{"SET","MARGIN TO","Set( _SET_MARGIN, 0 )"},
|
||||
{"SET","PRINTER \1A20ON,OFF,&>","Set( _SET_PRINTER, \1A30 )"},
|
||||
{"SET","PRINTER (\1A00)","Set( _SET_PRINTER, \1A00 )"},
|
||||
{"SET","PRINTER TO","Set( _SET_PRINTFILE, "" )"},
|
||||
{"SET","PRINTER TO \1A40 [\1B20 ADDITIVE>]","Set( _SET_PRINTFILE, \1A30, \1B50 )"},
|
||||
{"SET","DEVICE TO SCREEN","Set( _SET_DEVICE, 'SCREEN' )"},
|
||||
{"SET","DEVICE TO PRINTER","Set( _SET_DEVICE, 'PRINTER' )"},
|
||||
{"SET","COLOR TO [\1A30]","SetColor( \1A10 )"},
|
||||
{"SET","COLOR TO ( \1A00 )","SetColor( \1A00 )"},
|
||||
{"SET","COLOUR TO [\1A30]","SET COLOR TO [\1A00]"},
|
||||
{"SET","CURSOR \1A20ON,OFF,&>","SetCursor( if(Upper(\1A30) == 'ON', 1, 0) )"},
|
||||
{"SET","CURSOR (\1A00)","SetCursor( if(\1A00, 1, 0) )"},
|
||||
{"?","[ \1A10]","QOut( \1A00 )"},
|
||||
{"??","[ \1A10]","QQOut( \1A00 )"},
|
||||
{"EJECT","","__Eject()"},
|
||||
{"TEXT","","text QOut, QQOut"},
|
||||
{"TEXT","TO FILE \1A40","__TextSave( \1A30 ) ; text QOut, __TextRestore"},
|
||||
{"TEXT","TO PRINTER","__TextSave('PRINTER') ; text QOut, __TextRestore"},
|
||||
{"CLS","","Scroll() ; SetPos(0,0)"},
|
||||
{"CLEAR","SCREEN","CLS"},
|
||||
{"@","\1A00, \1B00","Scroll( \1A00, \1B00, \1A00 ) ; SetPos( \1A00, \1B00 )"},
|
||||
{"@","\1A00, \1B00 CLEAR","Scroll( \1A00, \1B00 ) ; SetPos( \1A00, \1B00 )"},
|
||||
{"@","\1A00, \1B00 CLEAR TO \1C00, \1D00","Scroll( \1A00, \1B00, \1C00, \1D00 ) ; SetPos( \1A00, \1B00 )"},
|
||||
{"@","\1A00, \1B00, \1C00, \1D00 BOX \1E00 [COLOR \1F00]","DispBox( \1A00, \1B00, \1C00, \1D00, \1E00 [, \1F00 ] )"},
|
||||
{"@","\1A00, \1B00 TO \1C00, \1D00 [DOUBLE] [COLOR \1E00]","DispBox( \1A00, \1B00, \1C00, \1D00, 2 [, \1E00 ] )"},
|
||||
{"@","\1A00, \1B00 TO \1C00, \1D00 [COLOR \1E00]","DispBox( \1A00, \1B00, \1C00, \1D00, 1 [, \1E00 ] )"},
|
||||
{"@","\1A00, \1B00 SAY \1C00 [PICTURE \1D00] [COLOR \1E00]","DevPos( \1A00, \1B00 ) ; DevOutPict( \1C00, \1D00 [, \1E00] )"},
|
||||
{"@","\1A00, \1B00 SAY \1C00 [COLOR \1D00]","DevPos( \1A00, \1B00 ) ; DevOut( \1C00 [, \1D00] )"},
|
||||
{"SET","BELL \1A20ON,OFF,&>","Set( _SET_BELL, \1A30 )"},
|
||||
{"SET","BELL (\1A00)","Set( _SET_BELL, \1A00 )"},
|
||||
{"SET","CONFIRM \1A20ON,OFF,&>","Set( _SET_CONFIRM, \1A30 )"},
|
||||
{"SET","CONFIRM (\1A00)","Set( _SET_CONFIRM, \1A00 )"},
|
||||
{"SET","ESCAPE \1A20ON,OFF,&>","Set( _SET_ESCAPE, \1A30 )"},
|
||||
{"SET","ESCAPE (\1A00)","Set( _SET_ESCAPE, \1A00 )"},
|
||||
{"SET","INTENSITY \1A20ON,OFF,&>","Set( _SET_INTENSITY, \1A30 )"},
|
||||
{"SET","INTENSITY (\1A00)","Set( _SET_INTENSITY, \1A00 )"},
|
||||
{"SET","SCOREBOARD \1A20ON,OFF,&>","Set( _SET_SCOREBOARD, \1A30 )"},
|
||||
{"SET","SCOREBOARD (\1A00)","Set( _SET_SCOREBOARD, \1A00 )"},
|
||||
{"SET","DELIMITERS \1A20ON,OFF,&>","Set( _SET_DELIMITERS, \1A30 )"},
|
||||
{"SET","DELIMITERS (\1A00)","Set( _SET_DELIMITERS, \1A00 )"},
|
||||
{"SET","DELIMITERS TO \1A00","Set( _SET_DELIMCHARS, \1A00 )"},
|
||||
{"SET","DELIMITERS TO DEFAULT","Set( _SET_DELIMCHARS, '::' )"},
|
||||
{"SET","DELIMITERS TO","Set( _SET_DELIMCHARS, '::' )"},
|
||||
{"SET","FORMAT TO \1A00","_ProcReq_( \1A30 + '.FMT' ) ; __SetFormat( {|| \1A00()} )"},
|
||||
{"SET","FORMAT TO \1A00.\1B00","_ProcReq_( \1A30 + '.' + \1B30 ) ; __SetFormat( {|| \1A00()} )"},
|
||||
{"SET","FORMAT TO \1A20&>","if ( Empty(\1A30) ) ; SET FORMAT TO ; else ; __SetFormat( &('{||' + \1A30 + '()}') ) ; end"},
|
||||
{"SET","FORMAT TO","__SetFormat()"},
|
||||
{"@","\1A00, \1B00 GET \1C00 [PICTURE \1D00] [VALID \1E00] [WHEN \1F00] [SEND \1G00]",
|
||||
{0,"DO","WHILE \1A00","while \1A00"},
|
||||
{0,"END","\1A00","end"},
|
||||
{0,"END","SEQUENCE","end"},
|
||||
{0,"ENDSEQUENCE","","end"},
|
||||
{0,"ENDDO","\1A30","enddo"},
|
||||
{0,"ENDIF","\1A30","endif"},
|
||||
{0,"ENDCASE","\1A30","endcase"},
|
||||
{0,"ENDFOR","[ \1A30 ]","next"},
|
||||
{0,"NEXT","\1A00 [TO \1B00] [STEP \1C00]","next"},
|
||||
{0,"DO","\1A00.PRG [WITH \1B10]","do \1A00 [ WITH \1B00]"},
|
||||
{0,"CALL","\1A00() [WITH \1B10]","call \1A00 [ WITH \1B00]"},
|
||||
{0,"STORE","\1A00 TO \1B00 [, \1C00 ]","\1B00 := [ \1C00 := ] \1A00"},
|
||||
{0,"SET","ECHO \1A30",NULL},
|
||||
{0,"SET","HEADING \1A30",NULL},
|
||||
{0,"SET","MENU \1A30",NULL},
|
||||
{0,"SET","STATUS \1A30",NULL},
|
||||
{0,"SET","STEP \1A30",NULL},
|
||||
{0,"SET","SAFETY \1A30",NULL},
|
||||
{0,"SET","TALK \1A30",NULL},
|
||||
{0,"SET","PROCEDURE TO",NULL},
|
||||
{0,"SET","PROCEDURE TO \1A00","_ProcReq_( \1A30 )"},
|
||||
{0,"SET","EXACT \1A20ON,OFF,&>","Set( _SET_EXACT, \1A30 )"},
|
||||
{0,"SET","EXACT (\1A00)","Set( _SET_EXACT, \1A00 )"},
|
||||
{0,"SET","FIXED \1A20ON,OFF,&>","Set( _SET_FIXED, \1A30 )"},
|
||||
{0,"SET","FIXED (\1A00)","Set( _SET_FIXED, \1A00 )"},
|
||||
{0,"SET","DECIMALS TO \1A00","Set( _SET_DECIMALS, \1A00 )"},
|
||||
{0,"SET","DECIMALS TO","Set( _SET_DECIMALS, 0 )"},
|
||||
{0,"SET","PATH TO \1A30","Set( _SET_PATH, \1A30 )"},
|
||||
{0,"SET","PATH TO","Set( _SET_PATH, "" )"},
|
||||
{0,"SET","DEFAULT TO \1A40","Set( _SET_DEFAULT, \1A30 )"},
|
||||
{0,"SET","DEFAULT TO","Set( _SET_DEFAULT, "" )"},
|
||||
{0,"SET","CENTURY \1A20ON,OFF,&>","__SetCentury( \1A30 )"},
|
||||
{0,"SET","CENTURY (\1A00)","__SetCentury( \1A00 )"},
|
||||
{0,"SET","EPOCH TO \1A00","Set( _SET_EPOCH, \1A00 )"},
|
||||
{0,"SET","DATE FORMAT [TO] \1A00","Set( _SET_DATEFORMAT, \1A00 )"},
|
||||
{0,"SET","DATE [TO] AMERICAN","_DFSET( 'mm/dd/yyyy', 'mm/dd/yy' )"},
|
||||
{0,"SET","DATE [TO] ANSI","_DFSET( 'yyyy.mm.dd', 'yy.mm.dd' )"},
|
||||
{0,"SET","DATE [TO] BRITISH","_DFSET( 'dd/mm/yyyy', 'dd/mm/yy' )"},
|
||||
{0,"SET","DATE [TO] FRENCH","_DFSET( 'dd/mm/yyyy', 'dd/mm/yy' )"},
|
||||
{0,"SET","DATE [TO] GERMAN","_DFSET( 'dd.mm.yyyy', 'dd.mm.yy' )"},
|
||||
{0,"SET","DATE [TO] ITALIAN","_DFSET( 'dd-mm-yyyy', 'dd-mm-yy' )"},
|
||||
{0,"SET","DATE [TO] JAPANESE","_DFSET( 'yyyy/mm/dd', 'yy/mm/dd' )"},
|
||||
{0,"SET","DATE [TO] USA","_DFSET( 'mm-dd-yyyy', 'mm-dd-yy' )"},
|
||||
{0,"SET","ALTERNATE \1A20ON,OFF,&>","Set( _SET_ALTERNATE, \1A30 )"},
|
||||
{0,"SET","ALTERNATE (\1A00)","Set( _SET_ALTERNATE, \1A00 )"},
|
||||
{0,"SET","ALTERNATE TO","Set( _SET_ALTFILE, "" )"},
|
||||
{0,"SET","ALTERNATE TO \1A40 [\1B20 ADDITIVE>]","Set( _SET_ALTFILE, \1A30, \1B50 )"},
|
||||
{0,"SET","CONSOLE \1A20ON,OFF,&>","Set( _SET_CONSOLE, \1A30 )"},
|
||||
{0,"SET","CONSOLE (\1A00)","Set( _SET_CONSOLE, \1A00 )"},
|
||||
{0,"SET","MARGIN TO \1A00","Set( _SET_MARGIN, \1A00 )"},
|
||||
{0,"SET","MARGIN TO","Set( _SET_MARGIN, 0 )"},
|
||||
{0,"SET","PRINTER \1A20ON,OFF,&>","Set( _SET_PRINTER, \1A30 )"},
|
||||
{0,"SET","PRINTER (\1A00)","Set( _SET_PRINTER, \1A00 )"},
|
||||
{0,"SET","PRINTER TO","Set( _SET_PRINTFILE, "" )"},
|
||||
{0,"SET","PRINTER TO \1A40 [\1B20 ADDITIVE>]","Set( _SET_PRINTFILE, \1A30, \1B50 )"},
|
||||
{0,"SET","DEVICE TO SCREEN","Set( _SET_DEVICE, 'SCREEN' )"},
|
||||
{0,"SET","DEVICE TO PRINTER","Set( _SET_DEVICE, 'PRINTER' )"},
|
||||
{0,"SET","COLOR TO [\1A30]","SetColor( \1A10 )"},
|
||||
{0,"SET","COLOR TO ( \1A00 )","SetColor( \1A00 )"},
|
||||
{0,"SET","COLOUR TO [\1A30]","SET COLOR TO [\1A00]"},
|
||||
{0,"SET","CURSOR \1A20ON,OFF,&>","SetCursor( if(Upper(\1A30) == 'ON', 1, 0) )"},
|
||||
{0,"SET","CURSOR (\1A00)","SetCursor( if(\1A00, 1, 0) )"},
|
||||
{0,"?","[ \1A10]","QOut( \1A00 )"},
|
||||
{0,"??","[ \1A10]","QQOut( \1A00 )"},
|
||||
{0,"EJECT","","__Eject()"},
|
||||
{0,"TEXT","","text QOut, QQOut"},
|
||||
{0,"TEXT","TO FILE \1A40","__TextSave( \1A30 ) ; text QOut, __TextRestore"},
|
||||
{0,"TEXT","TO PRINTER","__TextSave('PRINTER') ; text QOut, __TextRestore"},
|
||||
{0,"CLS","","Scroll() ; SetPos(0,0)"},
|
||||
{0,"CLEAR","SCREEN","CLS"},
|
||||
{0,"@","\1A00, \1B00","Scroll( \1A00, \1B00, \1A00 ) ; SetPos( \1A00, \1B00 )"},
|
||||
{0,"@","\1A00, \1B00 CLEAR","Scroll( \1A00, \1B00 ) ; SetPos( \1A00, \1B00 )"},
|
||||
{0,"@","\1A00, \1B00 CLEAR TO \1C00, \1D00","Scroll( \1A00, \1B00, \1C00, \1D00 ) ; SetPos( \1A00, \1B00 )"},
|
||||
{0,"@","\1A00, \1B00, \1C00, \1D00 BOX \1E00 [COLOR \1F00]","DispBox( \1A00, \1B00, \1C00, \1D00, \1E00 [, \1F00 ] )"},
|
||||
{0,"@","\1A00, \1B00 TO \1C00, \1D00 [DOUBLE] [COLOR \1E00]","DispBox( \1A00, \1B00, \1C00, \1D00, 2 [, \1E00 ] )"},
|
||||
{0,"@","\1A00, \1B00 TO \1C00, \1D00 [COLOR \1E00]","DispBox( \1A00, \1B00, \1C00, \1D00, 1 [, \1E00 ] )"},
|
||||
{0,"@","\1A00, \1B00 SAY \1C00 [PICTURE \1D00] [COLOR \1E00]","DevPos( \1A00, \1B00 ) ; DevOutPict( \1C00, \1D00 [, \1E00] )"},
|
||||
{0,"@","\1A00, \1B00 SAY \1C00 [COLOR \1D00]","DevPos( \1A00, \1B00 ) ; DevOut( \1C00 [, \1D00] )"},
|
||||
{0,"SET","BELL \1A20ON,OFF,&>","Set( _SET_BELL, \1A30 )"},
|
||||
{0,"SET","BELL (\1A00)","Set( _SET_BELL, \1A00 )"},
|
||||
{0,"SET","CONFIRM \1A20ON,OFF,&>","Set( _SET_CONFIRM, \1A30 )"},
|
||||
{0,"SET","CONFIRM (\1A00)","Set( _SET_CONFIRM, \1A00 )"},
|
||||
{0,"SET","ESCAPE \1A20ON,OFF,&>","Set( _SET_ESCAPE, \1A30 )"},
|
||||
{0,"SET","ESCAPE (\1A00)","Set( _SET_ESCAPE, \1A00 )"},
|
||||
{0,"SET","INTENSITY \1A20ON,OFF,&>","Set( _SET_INTENSITY, \1A30 )"},
|
||||
{0,"SET","INTENSITY (\1A00)","Set( _SET_INTENSITY, \1A00 )"},
|
||||
{0,"SET","SCOREBOARD \1A20ON,OFF,&>","Set( _SET_SCOREBOARD, \1A30 )"},
|
||||
{0,"SET","SCOREBOARD (\1A00)","Set( _SET_SCOREBOARD, \1A00 )"},
|
||||
{0,"SET","DELIMITERS \1A20ON,OFF,&>","Set( _SET_DELIMITERS, \1A30 )"},
|
||||
{0,"SET","DELIMITERS (\1A00)","Set( _SET_DELIMITERS, \1A00 )"},
|
||||
{0,"SET","DELIMITERS TO \1A00","Set( _SET_DELIMCHARS, \1A00 )"},
|
||||
{0,"SET","DELIMITERS TO DEFAULT","Set( _SET_DELIMCHARS, '::' )"},
|
||||
{0,"SET","DELIMITERS TO","Set( _SET_DELIMCHARS, '::' )"},
|
||||
{0,"SET","FORMAT TO \1A00","_ProcReq_( \1A30 + '.FMT' ) ; __SetFormat( {|| \1A00()} )"},
|
||||
{0,"SET","FORMAT TO \1A00.\1B00","_ProcReq_( \1A30 + '.' + \1B30 ) ; __SetFormat( {|| \1A00()} )"},
|
||||
{0,"SET","FORMAT TO \1A20&>","if ( Empty(\1A30) ) ; SET FORMAT TO ; else ; __SetFormat( &('{||' + \1A30 + '()}') ) ; end"},
|
||||
{0,"SET","FORMAT TO","__SetFormat()"},
|
||||
{0,"@","\1A00, \1B00 GET \1C00 [PICTURE \1D00] [VALID \1E00] [WHEN \1F00] [SEND \1G00]",
|
||||
"SetPos( \1A00, \1B00 ) ; AAdd( GetList, _GET_( \1C00, \1C20, \1D00, \1E40, \1F40 ):display() ) [; ATail(GetList):\1G00]"},
|
||||
{"@","\1A00, \1B00 SAY \1C00 [\1D10] GET \1E00 [\1F10]","@ \1A00, \1B00 SAY \1C00 [\1D00] ; @ Row(), Col()+1 GET \1E00 [\1F00]"},
|
||||
{"@","\1A00, \1B00 GET \1C00 [\1D10] RANGE \1E00, \1F00 [\1G10]",
|
||||
{0,"@","\1A00, \1B00 SAY \1C00 [\1D10] GET \1E00 [\1F10]","@ \1A00, \1B00 SAY \1C00 [\1D00] ; @ Row(), Col()+1 GET \1E00 [\1F00]"},
|
||||
{0,"@","\1A00, \1B00 GET \1C00 [\1D10] RANGE \1E00, \1F00 [\1G10]",
|
||||
"@ \1A00, \1B00 GET \1C00 [\1D00] VALID {|_1| RangeCheck(_1,, \1E00, \1F00)} [\1G00]"},
|
||||
{"@","\1A00, \1B00 GET \1C00 [\1D10] COLOR \1E00 [\1F10]","@ \1A00, \1B00 GET \1C00 [\1D00] SEND colorDisp(\1E00) [\1F00]"},
|
||||
{"READ","SAVE","ReadModal(GetList)"},
|
||||
{"READ","","ReadModal(GetList) ; GetList := {}"},
|
||||
{"CLEAR","GETS","ReadKill(.T.) ; GetList := {}"},
|
||||
{"@","[\1A10] COLOUR [\1B10]","@ [\1A00] COLOR [\1B00]"},
|
||||
{"SET","WRAP \1A20ON,OFF,&>","Set( _SET_WRAP, \1A30 )"},
|
||||
{"SET","WRAP (\1A00)","Set( _SET_WRAP, \1A00 )"},
|
||||
{"SET","MESSAGE TO \1A00 [\1B20 CENTER, CENTRE>]","Set( _SET_MESSAGE, \1A00 ) ; Set( _SET_MCENTER, \1B50 )"},
|
||||
{"SET","MESSAGE TO","Set( _SET_MESSAGE, 0 ) ; Set( _SET_MCENTER, .f. )"},
|
||||
{"@","\1A00, \1B00 PROMPT \1C00 [MESSAGE \1D00]","__AtPrompt( \1A00, \1B00, \1C00 , \1D00 )"},
|
||||
{"MENU","TO \1A00","\1A00 := __MenuTo( {|_1| if(PCount() == 0, \1A00, \1A00 := _1)}, \1A10 )"},
|
||||
{"SAVE","SCREEN","__XSaveScreen()"},
|
||||
{"RESTORE","SCREEN","__XRestScreen()"},
|
||||
{"SAVE","SCREEN TO \1A00","\1A00 := SaveScreen( 0, 0, Maxrow(), Maxcol() )"},
|
||||
{"RESTORE","SCREEN FROM \1A00","RestScreen( 0, 0, Maxrow(), Maxcol(), \1A00 )"},
|
||||
{"WAIT","[\1A00]","__Wait( \1A00 )"},
|
||||
{"WAIT","[\1A00] TO \1B00","\1B00 := __Wait( \1A00 )"},
|
||||
{"ACCEPT","[\1A00] TO \1B00","\1B00 := __Accept( \1A00 )"},
|
||||
{"INPUT","[\1A00] TO \1B00", "if ( !Empty(__Accept(\1A00)) ) ; \1B00 := &( __AcceptStr() ) ; end"},
|
||||
{"KEYBOARD","\1A00","__Keyboard( \1A00 )"},
|
||||
{"CLEAR","TYPEAHEAD","__Keyboard()"},
|
||||
{"SET","TYPEAHEAD TO \1A00","Set( _SET_TYPEAHEAD, \1A00 )"},
|
||||
{"SET","KEY \1A00 TO \1B00","SetKey( \1A00, {|p, l, v| \1B00(p, l, v)} )"},
|
||||
{"SET","KEY \1A00 TO \1B00 ( [\1C10] )","SET KEY \1A00 TO \1B00"},
|
||||
{"SET","KEY \1A00 TO \1B20&>","if ( Empty(\1B30) ) ; SetKey( \1A00, NIL ) ; else ; SetKey( \1A00, {|p, l, v| \1B00(p, l, v)} ) ; end"},
|
||||
{"SET","KEY \1A00 [TO]","SetKey( \1A00, NIL )"},
|
||||
{"SET","FUNCTION \1A00 [TO] [\1B00]","__SetFunction( \1A00, \1B00 )"},
|
||||
{"CLEAR","MEMORY","__MClear()"},
|
||||
{"RELEASE","\1A10s","__MXRelease( \1A20 )"},
|
||||
{"RELEASE","ALL","__MRelease('*', .t.)"},
|
||||
{"RELEASE","ALL LIKE \1A00","__MRelease( \1A10, .t. )"},
|
||||
{"RELEASE","ALL EXCEPT \1A00","__MRelease( \1A10, .f. )"},
|
||||
{"RESTORE","[FROM \1A40] [\1B20 ADDITIVE>]","__MRestore( \1A30, \1B50 )"},
|
||||
{"SAVE","ALL LIKE \1A00 TO \1B40","__MSave( \1B30, \1A30, .t. )"},
|
||||
{"SAVE","TO \1A40 ALL LIKE \1B00","__MSave( \1A30, \1B30, .t. )"},
|
||||
{"SAVE","ALL EXCEPT \1A00 TO \1B40","__MSave( \1B30, \1A30, .f. )"},
|
||||
{"SAVE","TO \1A40 ALL EXCEPT \1B00","__MSave( \1A30, \1B30, .f. )"},
|
||||
{"SAVE","[TO \1A40] [ALL]","__MSave( \1A30, '*', .t. )"},
|
||||
{"ERASE","\1A40","FErase( \1A30 )"},
|
||||
{"DELETE","FILE \1A40","FErase( \1A30 )"},
|
||||
{"RENAME","\1A40 TO \1B40","FRename( \1A30, \1B30 )"},
|
||||
{"COPY","FILE \1A40 TO \1B40","__CopyFile( \1A30, \1B30 )"},
|
||||
{"DIR","[\1A40]","__Dir( \1A30 )"},
|
||||
{"TYPE","\1A40 [\1B20 TO PRINTER>] [TO FILE \1C40]","__TypeFile( \1A30, \1B50 ) [; COPY FILE \1A30 TO \1C30 ]"},
|
||||
{"TYPE","\1A40 [\1B20 TO PRINTER>]","__TypeFile( \1A30, \1B50 )"},
|
||||
{"REQUEST","\1A10s","EXTERNAL \1A00"},
|
||||
{"CANCEL","","__Quit()"},
|
||||
{"QUIT","","__Quit()"},
|
||||
{"RUN","\1A30","__Run( \1A10 )"},
|
||||
{"RUN","( \1A00 )","__Run( \1A00 )"},
|
||||
{"!","\1A30","RUN \1A00"},
|
||||
{"RUN","= \1A00","( run := \1A00 )"},
|
||||
{"RUN",":= \1A00","( run := \1A00 )"},
|
||||
{"SET","EXCLUSIVE \1A20ON,OFF,&>","Set( _SET_EXCLUSIVE, \1A30 )"},
|
||||
{"SET","EXCLUSIVE (\1A00)","Set( _SET_EXCLUSIVE, \1A00 )"},
|
||||
{"SET","SOFTSEEK \1A20ON,OFF,&>","Set( _SET_SOFTSEEK, \1A30 )"},
|
||||
{"SET","SOFTSEEK (\1A00)","Set( _SET_SOFTSEEK, \1A00 )"},
|
||||
{"SET","UNIQUE \1A20ON,OFF,&>","Set( _SET_UNIQUE, \1A30 )"},
|
||||
{"SET","UNIQUE (\1A00)","Set( _SET_UNIQUE, \1A00 )"},
|
||||
{"SET","DELETED \1A20ON,OFF,&>","Set( _SET_DELETED, \1A30 )"},
|
||||
{"SET","DELETED (\1A00)","Set( _SET_DELETED, \1A00 )"},
|
||||
{"SELECT","\1A00","dbSelectArea( \1A30 )"},
|
||||
{"SELECT","\1A00([\1B10])","dbSelectArea( \1A00(\1B00) )"},
|
||||
{"USE","","dbCloseArea()"},
|
||||
{"USE","\1A40 [VIA \1B00] [ALIAS \1C00] [\1D20 NEW>] [\1E20 EXCLUSIVE>] [\1F20 SHARED>] [\1G20 READONLY>] [INDEX \1H40 [, \1I40]]",
|
||||
{0,"@","\1A00, \1B00 GET \1C00 [\1D10] COLOR \1E00 [\1F10]","@ \1A00, \1B00 GET \1C00 [\1D00] SEND colorDisp(\1E00) [\1F00]"},
|
||||
{0,"READ","SAVE","ReadModal(GetList)"},
|
||||
{0,"READ","","ReadModal(GetList) ; GetList := {}"},
|
||||
{0,"CLEAR","GETS","ReadKill(.T.) ; GetList := {}"},
|
||||
{0,"@","[\1A10] COLOUR [\1B10]","@ [\1A00] COLOR [\1B00]"},
|
||||
{0,"SET","WRAP \1A20ON,OFF,&>","Set( _SET_WRAP, \1A30 )"},
|
||||
{0,"SET","WRAP (\1A00)","Set( _SET_WRAP, \1A00 )"},
|
||||
{0,"SET","MESSAGE TO \1A00 [\1B20 CENTER, CENTRE>]","Set( _SET_MESSAGE, \1A00 ) ; Set( _SET_MCENTER, \1B50 )"},
|
||||
{0,"SET","MESSAGE TO","Set( _SET_MESSAGE, 0 ) ; Set( _SET_MCENTER, .f. )"},
|
||||
{0,"@","\1A00, \1B00 PROMPT \1C00 [MESSAGE \1D00]","__AtPrompt( \1A00, \1B00, \1C00 , \1D00 )"},
|
||||
{0,"MENU","TO \1A00","\1A00 := __MenuTo( {|_1| if(PCount() == 0, \1A00, \1A00 := _1)}, \1A10 )"},
|
||||
{0,"SAVE","SCREEN","__XSaveScreen()"},
|
||||
{0,"RESTORE","SCREEN","__XRestScreen()"},
|
||||
{0,"SAVE","SCREEN TO \1A00","\1A00 := SaveScreen( 0, 0, Maxrow(), Maxcol() )"},
|
||||
{0,"RESTORE","SCREEN FROM \1A00","RestScreen( 0, 0, Maxrow(), Maxcol(), \1A00 )"},
|
||||
{0,"WAIT","[\1A00]","__Wait( \1A00 )"},
|
||||
{0,"WAIT","[\1A00] TO \1B00","\1B00 := __Wait( \1A00 )"},
|
||||
{0,"ACCEPT","[\1A00] TO \1B00","\1B00 := __Accept( \1A00 )"},
|
||||
{0,"INPUT","[\1A00] TO \1B00", "if ( !Empty(__Accept(\1A00)) ) ; \1B00 := &( __AcceptStr() ) ; end"},
|
||||
{0,"KEYBOARD","\1A00","__Keyboard( \1A00 )"},
|
||||
{0,"CLEAR","TYPEAHEAD","__Keyboard()"},
|
||||
{0,"SET","TYPEAHEAD TO \1A00","Set( _SET_TYPEAHEAD, \1A00 )"},
|
||||
{0,"SET","KEY \1A00 TO \1B00","SetKey( \1A00, {|p, l, v| \1B00(p, l, v)} )"},
|
||||
{0,"SET","KEY \1A00 TO \1B00 ( [\1C10] )","SET KEY \1A00 TO \1B00"},
|
||||
{0,"SET","KEY \1A00 TO \1B20&>","if ( Empty(\1B30) ) ; SetKey( \1A00, NIL ) ; else ; SetKey( \1A00, {|p, l, v| \1B00(p, l, v)} ) ; end"},
|
||||
{0,"SET","KEY \1A00 [TO]","SetKey( \1A00, NIL )"},
|
||||
{0,"SET","FUNCTION \1A00 [TO] [\1B00]","__SetFunction( \1A00, \1B00 )"},
|
||||
{0,"CLEAR","MEMORY","__MClear()"},
|
||||
{0,"RELEASE","\1A10s","__MXRelease( \1A20 )"},
|
||||
{0,"RELEASE","ALL","__MRelease('*', .t.)"},
|
||||
{0,"RELEASE","ALL LIKE \1A00","__MRelease( \1A10, .t. )"},
|
||||
{0,"RELEASE","ALL EXCEPT \1A00","__MRelease( \1A10, .f. )"},
|
||||
{0,"RESTORE","[FROM \1A40] [\1B20 ADDITIVE>]","__MRestore( \1A30, \1B50 )"},
|
||||
{0,"SAVE","ALL LIKE \1A00 TO \1B40","__MSave( \1B30, \1A30, .t. )"},
|
||||
{0,"SAVE","TO \1A40 ALL LIKE \1B00","__MSave( \1A30, \1B30, .t. )"},
|
||||
{0,"SAVE","ALL EXCEPT \1A00 TO \1B40","__MSave( \1B30, \1A30, .f. )"},
|
||||
{0,"SAVE","TO \1A40 ALL EXCEPT \1B00","__MSave( \1A30, \1B30, .f. )"},
|
||||
{0,"SAVE","[TO \1A40] [ALL]","__MSave( \1A30, '*', .t. )"},
|
||||
{0,"ERASE","\1A40","FErase( \1A30 )"},
|
||||
{0,"DELETE","FILE \1A40","FErase( \1A30 )"},
|
||||
{0,"RENAME","\1A40 TO \1B40","FRename( \1A30, \1B30 )"},
|
||||
{0,"COPY","FILE \1A40 TO \1B40","__CopyFile( \1A30, \1B30 )"},
|
||||
{0,"DIR","[\1A40]","__Dir( \1A30 )"},
|
||||
{0,"TYPE","\1A40 [\1B20 TO PRINTER>] [TO FILE \1C40]","__TypeFile( \1A30, \1B50 ) [; COPY FILE \1A30 TO \1C30 ]"},
|
||||
{0,"TYPE","\1A40 [\1B20 TO PRINTER>]","__TypeFile( \1A30, \1B50 )"},
|
||||
{0,"REQUEST","\1A10s","EXTERNAL \1A00"},
|
||||
{0,"CANCEL","","__Quit()"},
|
||||
{0,"QUIT","","__Quit()"},
|
||||
{0,"RUN","\1A30","__Run( \1A10 )"},
|
||||
{0,"RUN","( \1A00 )","__Run( \1A00 )"},
|
||||
{0,"!","\1A30","RUN \1A00"},
|
||||
{0,"RUN","= \1A00","( run := \1A00 )"},
|
||||
{0,"RUN",":= \1A00","( run := \1A00 )"},
|
||||
{0,"SET","EXCLUSIVE \1A20ON,OFF,&>","Set( _SET_EXCLUSIVE, \1A30 )"},
|
||||
{0,"SET","EXCLUSIVE (\1A00)","Set( _SET_EXCLUSIVE, \1A00 )"},
|
||||
{0,"SET","SOFTSEEK \1A20ON,OFF,&>","Set( _SET_SOFTSEEK, \1A30 )"},
|
||||
{0,"SET","SOFTSEEK (\1A00)","Set( _SET_SOFTSEEK, \1A00 )"},
|
||||
{0,"SET","UNIQUE \1A20ON,OFF,&>","Set( _SET_UNIQUE, \1A30 )"},
|
||||
{0,"SET","UNIQUE (\1A00)","Set( _SET_UNIQUE, \1A00 )"},
|
||||
{0,"SET","DELETED \1A20ON,OFF,&>","Set( _SET_DELETED, \1A30 )"},
|
||||
{0,"SET","DELETED (\1A00)","Set( _SET_DELETED, \1A00 )"},
|
||||
{0,"SELECT","\1A00","dbSelectArea( \1A30 )"},
|
||||
{0,"SELECT","\1A00([\1B10])","dbSelectArea( \1A00(\1B00) )"},
|
||||
{0,"USE","","dbCloseArea()"},
|
||||
{0,"USE","\1A40 [VIA \1B00] [ALIAS \1C00] [\1D20 NEW>] [\1E20 EXCLUSIVE>] [\1F20 SHARED>] [\1G20 READONLY>] [INDEX \1H40 [, \1I40]]",
|
||||
"dbUseArea( \1D50, \1B00, \1A30, \1C30, if(\1F50 .or. \1E50, !\1E50, NIL), \1G50 ) [; dbSetIndex( \1H30 )] [; dbSetIndex( \1I30 )]"},
|
||||
{"APPEND","BLANK","dbAppend()"},
|
||||
{"PACK","","__dbPack()"},
|
||||
{"ZAP","","__dbZap()"},
|
||||
{"UNLOCK","","dbUnlock()"},
|
||||
{"UNLOCK","ALL","dbUnlockAll()"},
|
||||
{"COMMIT","","dbCommitAll()"},
|
||||
{"GOTO","\1A00","dbGoto(\1A00)"},
|
||||
{"GO","\1A00","dbGoto(\1A00)"},
|
||||
{"GOTO","TOP","dbGoTop()"},
|
||||
{"GO","TOP","dbGoTop()"},
|
||||
{"GOTO","BOTTOM","dbGoBottom()"},
|
||||
{"GO","BOTTOM","dbGoBottom()"},
|
||||
{"SKIP","","dbSkip(1)"},
|
||||
{"SKIP","\1A00","dbSkip( \1A00 )"},
|
||||
{"SKIP","ALIAS \1A00","\1A00 -> ( dbSkip(1) )"},
|
||||
{"SKIP","\1A00 ALIAS \1B00","\1B00 -> ( dbSkip(\1A00) )"},
|
||||
{"SEEK","\1A00 [\1B20 SOFTSEEK>]","dbSeek( \1A00, if( \1B50, .T., NIL ) )"},
|
||||
{"FIND","\1A30","dbSeek( \1A30 )"},
|
||||
{"FIND",":= \1A00","( find := \1A00 )"},
|
||||
{"FIND","= \1A00","( find := \1A00 )"},
|
||||
{"CONTINUE","","__dbContinue()"},
|
||||
{"LOCATE","[FOR \1A00] [WHILE \1B00] [NEXT \1C00] [RECORD \1D00] [\1E20REST>] [ALL]",
|
||||
{0,"APPEND","BLANK","dbAppend()"},
|
||||
{0,"PACK","","__dbPack()"},
|
||||
{0,"ZAP","","__dbZap()"},
|
||||
{0,"UNLOCK","","dbUnlock()"},
|
||||
{0,"UNLOCK","ALL","dbUnlockAll()"},
|
||||
{0,"COMMIT","","dbCommitAll()"},
|
||||
{0,"GOTO","\1A00","dbGoto(\1A00)"},
|
||||
{0,"GO","\1A00","dbGoto(\1A00)"},
|
||||
{0,"GOTO","TOP","dbGoTop()"},
|
||||
{0,"GO","TOP","dbGoTop()"},
|
||||
{0,"GOTO","BOTTOM","dbGoBottom()"},
|
||||
{0,"GO","BOTTOM","dbGoBottom()"},
|
||||
{0,"SKIP","","dbSkip(1)"},
|
||||
{0,"SKIP","\1A00","dbSkip( \1A00 )"},
|
||||
{0,"SKIP","ALIAS \1A00","\1A00 -> ( dbSkip(1) )"},
|
||||
{0,"SKIP","\1A00 ALIAS \1B00","\1B00 -> ( dbSkip(\1A00) )"},
|
||||
{0,"SEEK","\1A00 [\1B20 SOFTSEEK>]","dbSeek( \1A00, if( \1B50, .T., NIL ) )"},
|
||||
{0,"FIND","\1A30","dbSeek( \1A30 )"},
|
||||
{0,"FIND",":= \1A00","( find := \1A00 )"},
|
||||
{0,"FIND","= \1A00","( find := \1A00 )"},
|
||||
{0,"CONTINUE","","__dbContinue()"},
|
||||
{0,"LOCATE","[FOR \1A00] [WHILE \1B00] [NEXT \1C00] [RECORD \1D00] [\1E20REST>] [ALL]",
|
||||
"__dbLocate(\1A40,\1B40,\1C00,\1D00,\1E50)"},
|
||||
{"SET","RELATION TO","dbClearRel()"},
|
||||
{"SET","RELATION [\1A20ADDITIVE>] [TO \1B00 INTO \1C40 [, [TO] \1D00 INTO \1E40]]",
|
||||
{0,"SET","RELATION TO","dbClearRel()"},
|
||||
{0,"SET","RELATION [\1A20ADDITIVE>] [TO \1B00 INTO \1C40 [, [TO] \1D00 INTO \1E40]]",
|
||||
"if ( !\1A50 ) ; dbClearRel() ; end ; dbSetRelation(\1C30,\1B40,\1B20) [; dbSetRelation(\1E30,\1D40,\1D20)]"},
|
||||
{"SET","FILTER TO","dbClearFilter(NIL)"},
|
||||
{"SET","FILTER TO \1A00","dbSetFilter( \1A40, \1A20 )"},
|
||||
{"SET","FILTER TO \1A20&>","if ( Empty(\1A30) ) ; dbClearFilter() ; else ; dbSetFilter(\1A40,\1A30) ; end"},
|
||||
{"REPLACE","[ \1A00 WITH \1B00 [, \1C00 WITH \1D00] ] [FOR \1E00] [WHILE \1F00] [NEXT \1G00] [RECORD \1H00] [\1I20REST>] [ALL]"},
|
||||
{"DBEval( {|| _FIELD->\1A00 := \1B00 [,_FIELD->\1C00 := \1D00]},\1E40,\1F40,\1G00,\1H00,\1I50)"},
|
||||
{"REPLACE","\1A00 WITH \1B00 [, \1C00 WITH \1D00 ]","_FIELD->\1A00 := \1B00 [; _FIELD->\1C00 := \1D00]"},
|
||||
{"DELETE","[FOR \1A00] [WHILE \1B00] [NEXT \1C00] [RECORD \1D00] [\1E20REST>] [ALL]"},
|
||||
{"DBEval( {|| dbDelete()}, \1A40, \1B40, \1C00, \1D00, \1E50 )"},
|
||||
{"RECALL","[FOR \1A00] [WHILE \1B00] [NEXT \1C00] [RECORD \1D00] [\1E20REST>] [ALL]"},
|
||||
{"DBEval( {|| dbRecall()}, \1A40, \1B40, \1C00, \1D00, \1E50 )"},
|
||||
{"DELETE","","dbDelete()"},
|
||||
{"RECALL","","dbRecall()"},
|
||||
{"CREATE","\1A40 [FROM \1B40] [VIA \1C00] [ALIAS \1D00] [\1E20 NEW>]","__dbCreate( \1A30, \1B30, \1C00, \1E50, \1D30 )"},
|
||||
{"COPY","[STRUCTURE] [EXTENDED] [TO \1A40]","__dbCopyXStruct( \1A30 )"},
|
||||
{"COPY","[STRUCTURE] [TO \1A40] [FIELDS \1B10]","__dbCopyStruct( \1A30, { \1B30 } )"},
|
||||
{"COPY","[TO \1A40] [DELIMITED [WITH \1B30]] [FIELDS \1C10] [FOR \1D00] [WHILE \1E00] [NEXT \1F00] [RECORD \1G00] [\1H20REST>] [ALL]",
|
||||
{0,"SET","FILTER TO","dbClearFilter(NIL)"},
|
||||
{0,"SET","FILTER TO \1A00","dbSetFilter( \1A40, \1A20 )"},
|
||||
{0,"SET","FILTER TO \1A20&>","if ( Empty(\1A30) ) ; dbClearFilter() ; else ; dbSetFilter(\1A40,\1A30) ; end"},
|
||||
{0,"REPLACE","[ \1A00 WITH \1B00 [, \1C00 WITH \1D00] ] [FOR \1E00] [WHILE \1F00] [NEXT \1G00] [RECORD \1H00] [\1I20REST>] [ALL]"},
|
||||
{0,"DBEval( {|| _FIELD->\1A00 := \1B00 [,_FIELD->\1C00 := \1D00]},\1E40,\1F40,\1G00,\1H00,\1I50)"},
|
||||
{0,"REPLACE","\1A00 WITH \1B00 [, \1C00 WITH \1D00 ]","_FIELD->\1A00 := \1B00 [; _FIELD->\1C00 := \1D00]"},
|
||||
{0,"DELETE","[FOR \1A00] [WHILE \1B00] [NEXT \1C00] [RECORD \1D00] [\1E20REST>] [ALL]"},
|
||||
{0,"DBEval( {|| dbDelete()}, \1A40, \1B40, \1C00, \1D00, \1E50 )"},
|
||||
{0,"RECALL","[FOR \1A00] [WHILE \1B00] [NEXT \1C00] [RECORD \1D00] [\1E20REST>] [ALL]"},
|
||||
{0,"DBEval( {|| dbRecall()}, \1A40, \1B40, \1C00, \1D00, \1E50 )"},
|
||||
{0,"DELETE","","dbDelete()"},
|
||||
{0,"RECALL","","dbRecall()"},
|
||||
{0,"CREATE","\1A40 [FROM \1B40] [VIA \1C00] [ALIAS \1D00] [\1E20 NEW>]","__dbCreate( \1A30, \1B30, \1C00, \1E50, \1D30 )"},
|
||||
{0,"COPY","[STRUCTURE] [EXTENDED] [TO \1A40]","__dbCopyXStruct( \1A30 )"},
|
||||
{0,"COPY","[STRUCTURE] [TO \1A40] [FIELDS \1B10]","__dbCopyStruct( \1A30, { \1B30 } )"},
|
||||
{0,"COPY","[TO \1A40] [DELIMITED [WITH \1B30]] [FIELDS \1C10] [FOR \1D00] [WHILE \1E00] [NEXT \1F00] [RECORD \1G00] [\1H20REST>] [ALL]",
|
||||
"__dbDelim( .T., \1A30, \1B30, { \1C30 }, \1D40, \1E40, \1F00, \1G00, \1H50 )"},
|
||||
{"COPY","[TO \1A40] [SDF] [FIELDS \1B10] [FOR \1C00] [WHILE \1D00] [NEXT \1E00] [RECORD \1F00] [\1G20REST>] [ALL]",
|
||||
{0,"COPY","[TO \1A40] [SDF] [FIELDS \1B10] [FOR \1C00] [WHILE \1D00] [NEXT \1E00] [RECORD \1F00] [\1G20REST>] [ALL]",
|
||||
"__dbSDF( .T., \1A30, { \1B30 }, \1C40, \1D40, \1E00, \1F00, \1G50 )"},
|
||||
{"COPY","[TO \1A40] [FIELDS \1B10] [FOR \1C00] [WHILE \1D00] [NEXT \1E00] [RECORD \1F00] [\1G20REST>] [VIA \1H00] [ALL]",
|
||||
{0,"COPY","[TO \1A40] [FIELDS \1B10] [FOR \1C00] [WHILE \1D00] [NEXT \1E00] [RECORD \1F00] [\1G20REST>] [VIA \1H00] [ALL]",
|
||||
"__dbCopy( \1A30, { \1B30 }, \1C40, \1D40, \1E00, \1F00, \1G50, \1H00 )"},
|
||||
{"APPEND","[FROM \1A40] [DELIMITED [WITH \1B30]] [FIELDS \1C10] [FOR \1D00] [WHILE \1E00] [NEXT \1F00] [RECORD \1G00] [\1H20REST>] [ALL]",
|
||||
{0,"APPEND","[FROM \1A40] [DELIMITED [WITH \1B30]] [FIELDS \1C10] [FOR \1D00] [WHILE \1E00] [NEXT \1F00] [RECORD \1G00] [\1H20REST>] [ALL]",
|
||||
"__dbDelim( .F., \1A30, \1B30, { \1C30 }, \1D40, \1E40, \1F00, \1G00, \1H50 )"},
|
||||
{"APPEND","[FROM \1A40] [SDF] [FIELDS \1B10] [FOR \1C00] [WHILE \1D00] [NEXT \1E00] [RECORD \1F00] [\1G20REST>] [ALL]",
|
||||
{0,"APPEND","[FROM \1A40] [SDF] [FIELDS \1B10] [FOR \1C00] [WHILE \1D00] [NEXT \1E00] [RECORD \1F00] [\1G20REST>] [ALL]",
|
||||
"__dbSDF( .F., \1A30, { \1B30 }, \1C40, \1D40, \1E00, \1F00, \1G50 )"},
|
||||
{"APPEND","[FROM \1A40] [FIELDS \1B10] [FOR \1C00] [WHILE \1D00] [NEXT \1E00] [RECORD \1F00] [\1G20REST>] [VIA \1H00] [ALL]",
|
||||
{0,"APPEND","[FROM \1A40] [FIELDS \1B10] [FOR \1C00] [WHILE \1D00] [NEXT \1E00] [RECORD \1F00] [\1G20REST>] [VIA \1H00] [ALL]",
|
||||
"__dbApp( \1A30, { \1B30 }, \1C40, \1D40, \1E00, \1F00, \1G50, \1H00 )"},
|
||||
{"SORT","[TO \1A40] [ON \1B10] [FOR \1C00] [WHILE \1D00] [NEXT \1E00] [RECORD \1F00] [\1G20REST>] [ALL]",
|
||||
{0,"SORT","[TO \1A40] [ON \1B10] [FOR \1C00] [WHILE \1D00] [NEXT \1E00] [RECORD \1F00] [\1G20REST>] [ALL]",
|
||||
"__dbSort( \1A30, { \1B30 }, \1C40, \1D40, \1E00, \1F00, \1G50 )"},
|
||||
{"TOTAL","[TO \1A40] [ON \1B00] [FIELDS \1C10] [FOR \1D00] [WHILE \1E00] [NEXT \1F00] [RECORD \1G00] [\1H20REST>] [ALL]",
|
||||
{0,"TOTAL","[TO \1A40] [ON \1B00] [FIELDS \1C10] [FOR \1D00] [WHILE \1E00] [NEXT \1F00] [RECORD \1G00] [\1H20REST>] [ALL]",
|
||||
"__dbTotal( \1A30, \1B40, { \1C30 }, \1D40, \1E40, \1F00, \1G00, \1H50 )"},
|
||||
{"UPDATE","[FROM \1A40] [ON \1B00] [REPLACE \1C00 WITH \1D00 [, \1E00 WITH \1F00]] [\1G20RANDOM>]",
|
||||
{0,"UPDATE","[FROM \1A40] [ON \1B00] [REPLACE \1C00 WITH \1D00 [, \1E00 WITH \1F00]] [\1G20RANDOM>]",
|
||||
"__dbUpdate( \1A30, \1B40, \1G50, {|| _FIELD->\1C00 := \1D00 [, _FIELD->\1E00 := \1F00]} )"},
|
||||
{"JOIN","[WITH \1A40] [TO \1B00] [FIELDS \1C10] [FOR \1D00]","__dbJoin( \1A30, \1B30, { \1C30 }, \1D40 )"},
|
||||
{"COUNT","[TO \1A00] [FOR \1B00] [WHILE \1C00] [NEXT \1D00] [RECORD \1E00] [\1F20REST>] [ALL]",
|
||||
{0,"JOIN","[WITH \1A40] [TO \1B00] [FIELDS \1C10] [FOR \1D00]","__dbJoin( \1A30, \1B30, { \1C30 }, \1D40 )"},
|
||||
{0,"COUNT","[TO \1A00] [FOR \1B00] [WHILE \1C00] [NEXT \1D00] [RECORD \1E00] [\1F20REST>] [ALL]",
|
||||
"\1A00 := 0 ; DBEval( {|| \1A00 := \1A00 + 1}, \1B40, \1C40, \1D00, \1E00, \1F50 )"},
|
||||
{"SUM","[ \1A00 [, \1B00] TO \1C00 [, \1D00] ] [FOR \1E00] [WHILE \1F00] [NEXT \1G00] [RECORD \1H00] [\1I20REST>] [ALL]",
|
||||
{0,"SUM","[ \1A00 [, \1B00] TO \1C00 [, \1D00] ] [FOR \1E00] [WHILE \1F00] [NEXT \1G00] [RECORD \1H00] [\1I20REST>] [ALL]",
|
||||
"\1C00 := [ \1D00 := ] 0 ; DBEval( {|| \1C00 := \1C00 + \1A00 [, \1D00 := \1D00 + \1B00 ]}, \1E40, \1F40, \1G00, \1H00, \1I50 )"},
|
||||
{"AVERAGE","[ \1A00 [, \1B00] TO \1C00 [, \1D00] ] [FOR \1E00] [WHILE \1F00] [NEXT \1G00] [RECORD \1H00] [\1I20REST>] [ALL]",
|
||||
{0,"AVERAGE","[ \1A00 [, \1B00] TO \1C00 [, \1D00] ] [FOR \1E00] [WHILE \1F00] [NEXT \1G00] [RECORD \1H00] [\1I20REST>] [ALL]",
|
||||
"M->__Avg := \1C00 := [ \1D00 := ] 0 ; DBEval( {|| M->__Avg := M->__Avg + 1, \1C00 := \1C00 + \1A00 [, \1D00 := \1D00 + \1B00] }, \1E40, \1F40, \1G00, \1H00, \1I50 ) ; \1C00 := \1C00 / M->__Avg [; \1D00 := \1D00 / M->__Avg ]"},
|
||||
{"LIST","[\1A10] [\1B20OFF>] [\1C20 TO PRINTER>] [TO FILE \1D40] [FOR \1E00] [WHILE \1F00] [NEXT \1G00] [RECORD \1H00] [\1I20REST>] [ALL]",
|
||||
{0,"LIST","[\1A10] [\1B20OFF>] [\1C20 TO PRINTER>] [TO FILE \1D40] [FOR \1E00] [WHILE \1F00] [NEXT \1G00] [RECORD \1H00] [\1I20REST>] [ALL]",
|
||||
"__dbList( \1B50, { \1A40 }, .t., \1E40, \1F40, \1G00, \1H00, \1I50, \1C50, \1D30 )"},
|
||||
{"DISPLAY","[\1A10] [\1B20OFF>] [\1C20 TO PRINTER>] [TO FILE \1D40] [FOR \1E00] [WHILE \1F00] [NEXT \1G00] [RECORD \1H00] [\1I20REST>] [\1J20ALL>]",
|
||||
{0,"DISPLAY","[\1A10] [\1B20OFF>] [\1C20 TO PRINTER>] [TO FILE \1D40] [FOR \1E00] [WHILE \1F00] [NEXT \1G00] [RECORD \1H00] [\1I20REST>] [\1J20ALL>]",
|
||||
"__DBList( \1B50, { \1A40 }, \1J50, \1E40, \1F40, \1G00, \1H00, \1I50, \1C50, \1D30 )"},
|
||||
{"REPORT","FORM \1A00 [HEADING \1B00] [\1C20 PLAIN>] [\1D20 NOEJECT>] [\1E20 SUMMARY>] [\1F20 NOCONSOLE>] [\1G20 TO PRINTER>] [TO FILE \1H40] [FOR \1I00] [WHILE \1J00] [NEXT \1K00] [RECORD \1L00] [\1M20REST>] [ALL]",
|
||||
{0,"REPORT","FORM \1A00 [HEADING \1B00] [\1C20 PLAIN>] [\1D20 NOEJECT>] [\1E20 SUMMARY>] [\1F20 NOCONSOLE>] [\1G20 TO PRINTER>] [TO FILE \1H40] [FOR \1I00] [WHILE \1J00] [NEXT \1K00] [RECORD \1L00] [\1M20REST>] [ALL]",
|
||||
"__ReportForm( \1A30, \1G50, \1H30, \1F50, \1I40, \1J40, \1K00, \1L00, \1M50, \1C50, \1B00, \1D50, \1E50 )"},
|
||||
{"LABEL","FORM \1A00 [\1B20 SAMPLE>] [\1C20 NOCONSOLE>] [\1D20 TO PRINTER>] [TO FILE \1E40] [FOR \1F00] [WHILE \1G00] [NEXT \1H00] [RECORD \1I00] [\1J20REST>] [ALL]",
|
||||
{0,"LABEL","FORM \1A00 [\1B20 SAMPLE>] [\1C20 NOCONSOLE>] [\1D20 TO PRINTER>] [TO FILE \1E40] [FOR \1F00] [WHILE \1G00] [NEXT \1H00] [RECORD \1I00] [\1J20REST>] [ALL]",
|
||||
"__LabelForm( \1A30, \1D50, \1E30, \1C50, \1F40, \1G40, \1H00, \1I00, \1J50, \1B50 )"},
|
||||
{"CLOSE","\1A00","\1A00->( dbCloseArea() )"},
|
||||
{"CLOSE","","dbCloseArea()"},
|
||||
{"CLOSE","DATABASES","dbCloseAll()"},
|
||||
{"CLOSE","ALTERNATE","Set(_SET_ALTFILE, "")"},
|
||||
{"CLOSE","FORMAT","__SetFormat(NIL)"},
|
||||
{"CLOSE","INDEXES","dbClearIndex()"},
|
||||
{"CLOSE","PROCEDURE",NULL},
|
||||
{"CLOSE","ALL","CLOSE DATABASES ; SELECT 1 ; CLOSE FORMAT"},
|
||||
{"CLEAR","","CLEAR SCREEN ; CLEAR GETS"},
|
||||
{"CLEAR","ALL","CLOSE DATABASES ; CLOSE FORMAT ; CLEAR MEMORY ; CLEAR GETS ; SET ALTERNATE OFF ; SET ALTERNATE TO"},
|
||||
{"INDEX","ON \1A00 [TAG \1B40 ] TO \1C40 [FOR \1D00] [\1E20ALL>] [WHILE \1F00] [NEXT \1G00] [RECORD \1H00] [\1I20REST>] [EVAL \1J00] [EVERY \1K00] [\1L20 UNIQUE>] [\1M20 ASCENDING>] [\1N20 DESCENDING>]",
|
||||
{0,"CLOSE","\1A00","\1A00->( dbCloseArea() )"},
|
||||
{0,"CLOSE","","dbCloseArea()"},
|
||||
{0,"CLOSE","DATABASES","dbCloseAll()"},
|
||||
{0,"CLOSE","ALTERNATE","Set(_SET_ALTFILE, "")"},
|
||||
{0,"CLOSE","FORMAT","__SetFormat(NIL)"},
|
||||
{0,"CLOSE","INDEXES","dbClearIndex()"},
|
||||
{0,"CLOSE","PROCEDURE",NULL},
|
||||
{0,"CLOSE","ALL","CLOSE DATABASES ; SELECT 1 ; CLOSE FORMAT"},
|
||||
{0,"CLEAR","","CLEAR SCREEN ; CLEAR GETS"},
|
||||
{0,"CLEAR","ALL","CLOSE DATABASES ; CLOSE FORMAT ; CLEAR MEMORY ; CLEAR GETS ; SET ALTERNATE OFF ; SET ALTERNATE TO"},
|
||||
{0,"INDEX","ON \1A00 [TAG \1B40 ] TO \1C40 [FOR \1D00] [\1E20ALL>] [WHILE \1F00] [NEXT \1G00] [RECORD \1H00] [\1I20REST>] [EVAL \1J00] [EVERY \1K00] [\1L20 UNIQUE>] [\1M20 ASCENDING>] [\1N20 DESCENDING>]",
|
||||
"ordCondSet( \1D20, \1D40, [\1E50], \1F40, \1J40, \1K00, RECNO(), \1G00, \1H00, [\1I50], [\1N50] ) ; ordCreate(\1C30, \1B30, \1A20, \1A40, [\1L50] )"},
|
||||
{"INDEX","ON \1A00 TAG \1B40 [TO \1C40] [FOR \1D00] [\1E20ALL>] [WHILE \1F00] [NEXT \1G00] [RECORD \1H00] [\1I20REST>] [EVAL \1J00] [EVERY \1K00] [\1L20 UNIQUE>] [\1M20 ASCENDING>] [\1N20 DESCENDING>]",
|
||||
{0,"INDEX","ON \1A00 TAG \1B40 [TO \1C40] [FOR \1D00] [\1E20ALL>] [WHILE \1F00] [NEXT \1G00] [RECORD \1H00] [\1I20REST>] [EVAL \1J00] [EVERY \1K00] [\1L20 UNIQUE>] [\1M20 ASCENDING>] [\1N20 DESCENDING>]",
|
||||
"ordCondSet( \1D20, \1D40, [\1E50], \1F40, \1J40, \1K00, RECNO(), \1G00, \1H00, [\1I50], [\1N50] ) ; ordCreate(\1C30, \1B30, \1A20, \1A40, [\1L50] )"},
|
||||
{"INDEX","ON \1A00 TO \1B40 [\1C20 UNIQUE>]","dbCreateIndex( \1B30, \1A20, \1A40, if( \1C50, .t., NIL ) )"},
|
||||
{"DELETE","TAG \1A40 [ IN \1B40 ] [, \1C40 [ IN \1D40 ] ]","ordDestroy( \1A30, \1B30 ) [; ordDestroy( \1C30, \1D30 ) ]"},
|
||||
{"REINDEX","[EVAL \1A00] [EVERY \1B00]","ordCondSet(,,,, \1A40, \1B00,,,,,,,) ; ordListRebuild()"},
|
||||
{"REINDEX","","ordListRebuild()"},
|
||||
{"SET","INDEX TO [ \1A40 [, \1B40]] [\1C20 ADDITIVE>]",
|
||||
{0,"INDEX","ON \1A00 TO \1B40 [\1C20 UNIQUE>]","dbCreateIndex( \1B30, \1A20, \1A40, if( \1C50, .t., NIL ) )"},
|
||||
{0,"DELETE","TAG \1A40 [ IN \1B40 ] [, \1C40 [ IN \1D40 ] ]","ordDestroy( \1A30, \1B30 ) [; ordDestroy( \1C30, \1D30 ) ]"},
|
||||
{0,"REINDEX","[EVAL \1A00] [EVERY \1B00]","ordCondSet(,,,, \1A40, \1B00,,,,,,,) ; ordListRebuild()"},
|
||||
{0,"REINDEX","","ordListRebuild()"},
|
||||
{0,"SET","INDEX TO [ \1A40 [, \1B40]] [\1C20 ADDITIVE>]",
|
||||
"if !\1C50 ; ordListClear() ; end [; ordListAdd( \1A30 )] [; ordListAdd( \1B30 )]"},
|
||||
{"SET","ORDER TO \1A00 [IN \1B40]","ordSetFocus( \1A00 [, \1B30] )"},
|
||||
{"SET","ORDER TO TAG \1A40 [IN \1B40]","ordSetFocus( \1A30 [, \1B30] )"},
|
||||
{"SET","ORDER TO","ordSetFocus(0)"}
|
||||
{0,"SET","ORDER TO \1A00 [IN \1B40]","ordSetFocus( \1A00 [, \1B30] )"},
|
||||
{0,"SET","ORDER TO TAG \1A40 [IN \1B40]","ordSetFocus( \1A30 [, \1B30] )"},
|
||||
{0,"SET","ORDER TO","ordSetFocus(0)"}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user