Corretta ricerca sorgenti dati e variabile d'ambiente.
Ora ricerca prima la definizione della sorgente dati in ODBC, in caso negativo utilizza CodeBase (se esiste la variabile d'ambiente SPPROOT) per leggere il file. git-svn-id: svn://10.65.10.50/trunk@5146 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
71486926d0
commit
0502d1c87a
202
ce/sesa.cpp
202
ce/sesa.cpp
@ -9,6 +9,12 @@
|
|||||||
static CDatabase _db;
|
static CDatabase _db;
|
||||||
static CString _strWorkDir;
|
static CString _strWorkDir;
|
||||||
|
|
||||||
|
#define S4DLL
|
||||||
|
#include <d4all.h>
|
||||||
|
|
||||||
|
static CODE4 _codebase;
|
||||||
|
static DATA4 *_dbdata;
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
// SESA field info
|
// SESA field info
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
@ -319,6 +325,8 @@ SESA_Recordset::SESA_Recordset(CDatabase* pDatabase)
|
|||||||
// SESA functions
|
// SESA functions
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
inline BOOL is_space(char c) { return c >= '\t' && c <= ' '; }
|
||||||
|
|
||||||
static BOOL UpdateODBCIni(LPCSTR szEntry, LPCSTR szDefault, BOOL bForce = FALSE)
|
static BOOL UpdateODBCIni(LPCSTR szEntry, LPCSTR szDefault, BOOL bForce = FALSE)
|
||||||
{
|
{
|
||||||
BOOL bWrite = bForce;
|
BOOL bWrite = bForce;
|
||||||
@ -337,25 +345,24 @@ static BOOL UpdateODBCIni(LPCSTR szEntry, LPCSTR szDefault, BOOL bForce = FALSE)
|
|||||||
}
|
}
|
||||||
|
|
||||||
BOOL SESA_OpenDatabase(const char* lpszDSN, const char* lpszConnect)
|
BOOL SESA_OpenDatabase(const char* lpszDSN, const char* lpszConnect)
|
||||||
{
|
{
|
||||||
if (lpszDSN == NULL || *lpszDSN == '\0')
|
if (lpszDSN == NULL || *lpszDSN == '\0')
|
||||||
{
|
|
||||||
lpszDSN = "SIGLAPP";
|
lpszDSN = "SIGLAPP";
|
||||||
const char* SIGLAPP = getenv(lpszDSN);
|
|
||||||
if (SIGLAPP)
|
|
||||||
{
|
|
||||||
UpdateODBCIni("Driver", "simba.dll");
|
|
||||||
UpdateODBCIni("Description", "Dati Comuni Sigla++");
|
|
||||||
UpdateODBCIni("FileType", "FoxPro 2.5");
|
|
||||||
UpdateODBCIni("DataDirectory", SIGLAPP, TRUE);
|
|
||||||
UpdateODBCIni("SingleUser", "False");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (lpszConnect == NULL || *lpszConnect == '\0')
|
if (lpszConnect == NULL || *lpszConnect == '\0')
|
||||||
lpszConnect = "ODBC;";
|
lpszConnect = "ODBC;";
|
||||||
|
|
||||||
// DataSrc Excl ReadOnly ConnectString
|
BOOL ok;
|
||||||
BOOL ok = _db.Open(lpszDSN, FALSE, TRUE, lpszConnect);
|
TRY
|
||||||
|
{
|
||||||
|
// DataSrc Excl ReadOnly ConnectString
|
||||||
|
ok = _db.Open(lpszDSN, FALSE, TRUE, lpszConnect);
|
||||||
|
}
|
||||||
|
CATCH_ALL(e)
|
||||||
|
{
|
||||||
|
ok = FALSE;
|
||||||
|
}
|
||||||
|
END_CATCH_ALL
|
||||||
|
|
||||||
if (!ok)
|
if (!ok)
|
||||||
{
|
{
|
||||||
CString msg;
|
CString msg;
|
||||||
@ -375,8 +382,8 @@ BOOL SESA_CloseDatabase()
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL SESA_DumpTable(const char* lpszTableName)
|
BOOL SESA_DumpTableODBC(const char* lpszTableName)
|
||||||
{
|
{
|
||||||
const BOOL bWasOpen = _db.IsOpen();
|
const BOOL bWasOpen = _db.IsOpen();
|
||||||
if (!bWasOpen)
|
if (!bWasOpen)
|
||||||
{
|
{
|
||||||
@ -430,6 +437,167 @@ BOOL SESA_DumpTable(const char* lpszTableName)
|
|||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BOOL SESA_DumpTableCODEBASE(const char* SIGLAPP, const char* lpszTableName)
|
||||||
|
{
|
||||||
|
BOOL ok;
|
||||||
|
CString filename;
|
||||||
|
CString msg;
|
||||||
|
|
||||||
|
d4init(&_codebase);
|
||||||
|
_dbdata = NULL;
|
||||||
|
_codebase.read_lock=0;
|
||||||
|
_codebase.default_unique_error=e4unique;
|
||||||
|
_codebase.safety=0;
|
||||||
|
_codebase.lock_attempts=1;
|
||||||
|
u4ncpy(_codebase.date_format,"CCYYMMDD",sizeof(_codebase.date_format));
|
||||||
|
|
||||||
|
filename = SIGLAPP;
|
||||||
|
if (filename.Right(1) != "\\" && filename.Right(1) != "/")
|
||||||
|
filename += "\\";
|
||||||
|
filename += lpszTableName;
|
||||||
|
_codebase.error_code=0;
|
||||||
|
_dbdata=d4open(&_codebase,(char*)(const char*)filename);
|
||||||
|
if (_dbdata != NULL)
|
||||||
|
{
|
||||||
|
CString strName = _strWorkDir;
|
||||||
|
CString fld_name,fld_val;
|
||||||
|
CStringArray field_list;
|
||||||
|
strName += lpszTableName;
|
||||||
|
strName += ".ini";
|
||||||
|
|
||||||
|
if (access(strName, 0x00) == 0)
|
||||||
|
{
|
||||||
|
// Legge la lista dei campi dal .ini se esiste gia'
|
||||||
|
|
||||||
|
char szField[16];
|
||||||
|
char szName[16];
|
||||||
|
char szFile[32];
|
||||||
|
|
||||||
|
// Mette .\ davanti al nome per cercare nella directory corrente,
|
||||||
|
// altrimenti lo cerca nella directory di Windows
|
||||||
|
sprintf(szFile, ".\\%s", strName);
|
||||||
|
|
||||||
|
for (int num = 0; ; num++)
|
||||||
|
{
|
||||||
|
sprintf(szField, "NAME(%d)", num);
|
||||||
|
GetPrivateProfileString("RECORD", szField, "", szName, sizeof(szName), szFile);
|
||||||
|
if (*szName)
|
||||||
|
field_list.Add(szName);
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Scarica il tracciato dei campi
|
||||||
|
ofstream out(strName);
|
||||||
|
out << "[MAIN]" << endl
|
||||||
|
<< "TYPEFIELD=-1" << endl
|
||||||
|
<< "DECSEP=." << endl
|
||||||
|
<< "FIELDSEP=|" << endl
|
||||||
|
<< endl;
|
||||||
|
|
||||||
|
out << "[RECORD]" << endl;
|
||||||
|
FIELD4INFO *field_info = d4field_info(_dbdata);
|
||||||
|
if (field_info != NULL)
|
||||||
|
{
|
||||||
|
const int num_fields = d4num_fields(_dbdata);
|
||||||
|
for (int num=0; num < num_fields; num++)
|
||||||
|
{
|
||||||
|
out << "NAME(" << num << ") = " << field_info[num].name << endl
|
||||||
|
<< endl;
|
||||||
|
field_list.Add(field_info[num].name);
|
||||||
|
}
|
||||||
|
u4free(field_info);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
msg = "Can't get file header.";
|
||||||
|
AfxMessageBox(msg, MB_OK | MB_ICONEXCLAMATION);
|
||||||
|
ok = FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ok)
|
||||||
|
{
|
||||||
|
strName = _strWorkDir;
|
||||||
|
strName += lpszTableName;
|
||||||
|
strName += ".txt";
|
||||||
|
ofstream out(strName);
|
||||||
|
d4top(_dbdata); // No tag is required
|
||||||
|
while (!d4eof(_dbdata) && ok)
|
||||||
|
{
|
||||||
|
if (!d4deleted(_dbdata)) // Dump only undeleted records
|
||||||
|
{
|
||||||
|
const int items = field_list.GetSize();
|
||||||
|
for (int num = 0; num < items && ok; num++)
|
||||||
|
{
|
||||||
|
fld_name = field_list.GetAt(num);
|
||||||
|
if (num)
|
||||||
|
out << '|';
|
||||||
|
FIELD4* fldfld = d4field(_dbdata,(char*)(const char*)fld_name);
|
||||||
|
if (fldfld != NULL)
|
||||||
|
{
|
||||||
|
fld_val = f4str(fldfld);
|
||||||
|
char * v = fld_val.GetBuffer(80);
|
||||||
|
// Trims leading & trailing spaces
|
||||||
|
{
|
||||||
|
char* last = v;
|
||||||
|
|
||||||
|
// Salta spazi iniziali
|
||||||
|
for (const char* s = v; *s && is_space(*s); s++);
|
||||||
|
|
||||||
|
// Copia stringa
|
||||||
|
for(char* c = v; *s; s++)
|
||||||
|
{
|
||||||
|
*c++ = *s;
|
||||||
|
if (!is_space(*s)) last = c;
|
||||||
|
}
|
||||||
|
// Elimina spazi finali
|
||||||
|
*last = '\0';
|
||||||
|
}
|
||||||
|
out << v;
|
||||||
|
fld_val.ReleaseBuffer();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
msg = "Can't get field ";
|
||||||
|
msg += fld_val;
|
||||||
|
AfxMessageBox(msg, MB_OK | MB_ICONEXCLAMATION);
|
||||||
|
ok = FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
out << endl;
|
||||||
|
}
|
||||||
|
d4skip(_dbdata,1L); // Skip next
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
d4close(_dbdata);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
msg = "Can't open file ";
|
||||||
|
msg += filename;
|
||||||
|
AfxMessageBox(msg, MB_OK | MB_ICONEXCLAMATION);
|
||||||
|
ok = FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
d4init_undo(&_codebase);
|
||||||
|
|
||||||
|
return ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOL SESA_DumpTable(const char* lpszTableName)
|
||||||
|
{
|
||||||
|
if (!SESA_DumpTableODBC(lpszTableName))
|
||||||
|
{
|
||||||
|
const char *SIGLAPP = getenv("SPPROOT");
|
||||||
|
return SIGLAPP ? SESA_DumpTableCODEBASE(SIGLAPP, lpszTableName) : FALSE;
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
BOOL SESA_WorkDir(const char* strDir)
|
BOOL SESA_WorkDir(const char* strDir)
|
||||||
{
|
{
|
||||||
_strWorkDir = strDir;
|
_strWorkDir = strDir;
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
BOOL SESA_WorkDir(const char* strDir);
|
BOOL SESA_WorkDir(const char* strDir);
|
||||||
BOOL SESA_OpenDatabase(const char* strDSN = NULL, const char* strConnect = NULL);
|
BOOL SESA_OpenDatabase(const char* strDSN = NULL, const char* strConnect = NULL);
|
||||||
BOOL SESA_DumpTable(const char* strTableName);
|
BOOL SESA_DumpTable(const char* strTableName);
|
||||||
|
BOOL SESA_DumpTableODBC(const char* strTableName);
|
||||||
|
BOOL SESA_DumpTableCODEBASE(const char* SIGLAPP, const char* strTableName);
|
||||||
BOOL SESA_CloseDatabase();
|
BOOL SESA_CloseDatabase();
|
||||||
|
461
ce/sesadump.def
461
ce/sesadump.def
@ -11,3 +11,464 @@ HEAPSIZE 1024 ; initial heap size
|
|||||||
; Stack size is passed as argument to linker's /STACK option
|
; Stack size is passed as argument to linker's /STACK option
|
||||||
|
|
||||||
|
|
||||||
|
IMPORTS
|
||||||
|
C4ATOD = CB5.1
|
||||||
|
C4ATOI = CB5.2
|
||||||
|
C4ATOL = CB5.3
|
||||||
|
C4DESCEND = CB5.4
|
||||||
|
C4DESCEND_DATE = CB5.5
|
||||||
|
C4DESCEND_NUM = CB5.6
|
||||||
|
C4DESCEND_STR = CB5.7
|
||||||
|
C4ENCODE = CB5.8
|
||||||
|
CODE4ALLOC = CB5.9
|
||||||
|
|
||||||
|
D4ALIAS = CB5.10
|
||||||
|
D4ALIAS_SET = CB5.11
|
||||||
|
D4APPEND = CB5.12
|
||||||
|
D4APPEND_BLANK = CB5.13
|
||||||
|
D4APPEND_DATA = CB5.14
|
||||||
|
D4APPEND_START = CB5.15
|
||||||
|
D4BLANK = CB5.16
|
||||||
|
D4BOF = CB5.17
|
||||||
|
D4BOTTOM = CB5.18
|
||||||
|
D4CHANGED = CB5.19
|
||||||
|
D4CHECK = CB5.20
|
||||||
|
D4CLOSE = CB5.21
|
||||||
|
D4CLOSE_ALL = CB5.22
|
||||||
|
D4CREATE = CB5.23
|
||||||
|
D4DATA = CB5.24
|
||||||
|
D4DELETE = CB5.25
|
||||||
|
D4DELETED = CB5.26
|
||||||
|
D4EOF = CB5.27
|
||||||
|
D4FIELD = CB5.28
|
||||||
|
D4FIELD_INFO = CB5.29
|
||||||
|
D4FIELD_J = CB5.30
|
||||||
|
D4FIELD_NUMBER = CB5.31
|
||||||
|
D4FLUSH = CB5.32
|
||||||
|
D4FLUSH_DATA = CB5.33
|
||||||
|
D4FLUSH_FILES = CB5.34
|
||||||
|
D4FREE_BLOCKS = CB5.35
|
||||||
|
D4GO = CB5.36
|
||||||
|
D4GO_DATA = CB5.37
|
||||||
|
D4GO_EOF = CB5.38
|
||||||
|
D4INDEX = CB5.39
|
||||||
|
D4INIT = CB5.40
|
||||||
|
D4INIT_UNDO = CB5.41
|
||||||
|
D4LOCK = CB5.42
|
||||||
|
D4LOCK_ALL = CB5.43
|
||||||
|
D4LOCK_APPEND = CB5.44
|
||||||
|
D4LOCK_FILE = CB5.45
|
||||||
|
D4LOCK_GROUP = CB5.46
|
||||||
|
D4LOCK_INDEX = CB5.47
|
||||||
|
D4LOCK_TEST = CB5.48
|
||||||
|
D4LOCK_TEST_APPEND = CB5.49
|
||||||
|
D4LOCK_TEST_FILE = CB5.50
|
||||||
|
D4LOCK_TEST_INDEX = CB5.51
|
||||||
|
D4MEMO_COMPRESS = CB5.52
|
||||||
|
D4NUM_FIELDS = CB5.53
|
||||||
|
D4OPEN = CB5.54
|
||||||
|
D4OPT_START = CB5.55
|
||||||
|
D4OPT_SUSPEND = CB5.56
|
||||||
|
D4OPTIMIZE = CB5.57
|
||||||
|
D4OPTIMIZE_WRITE = CB5.58
|
||||||
|
D4PACK = CB5.59
|
||||||
|
D4PACK_DATA = CB5.60
|
||||||
|
D4POSITION = CB5.61
|
||||||
|
D4POSITION_SET = CB5.62
|
||||||
|
D4READ = CB5.63
|
||||||
|
D4READ_OLD = CB5.64
|
||||||
|
D4RECALL = CB5.65
|
||||||
|
D4RECCOUNT = CB5.66
|
||||||
|
D4RECNO = CB5.67
|
||||||
|
D4RECORD = CB5.68
|
||||||
|
D4RECORD_POSITION = CB5.69
|
||||||
|
D4RECORD_WIDTH = CB5.70
|
||||||
|
D4REFRESH = CB5.71
|
||||||
|
D4REFRESH_RECORD = CB5.72
|
||||||
|
D4REINDEX = CB5.73
|
||||||
|
D4SEEK = CB5.74
|
||||||
|
D4SEEK_DOUBLE = CB5.75
|
||||||
|
D4SKIP = CB5.76
|
||||||
|
D4TAG = CB5.77
|
||||||
|
D4TAG_DEFAULT = CB5.78
|
||||||
|
D4TAG_NEXT = CB5.79
|
||||||
|
D4TAG_PREV = CB5.80
|
||||||
|
D4TAG_SELECT = CB5.81
|
||||||
|
D4TAG_SELECTED = CB5.82
|
||||||
|
D4TOP = CB5.83
|
||||||
|
D4UNLOCK = CB5.84
|
||||||
|
D4UNLOCK_FILES = CB5.85
|
||||||
|
D4VALIDATE_MEMO_IDS = CB5.86
|
||||||
|
D4WRITE = CB5.87
|
||||||
|
D4WRITE_DATA = CB5.88
|
||||||
|
D4WRITE_KEYS = CB5.89
|
||||||
|
D4ZAP = CB5.90
|
||||||
|
D4ZAP_DATA = CB5.91
|
||||||
|
|
||||||
|
DATE4ASSIGN = CB5.92
|
||||||
|
DATE4CDOW = CB5.93
|
||||||
|
DATE4CMONTH = CB5.94
|
||||||
|
DATE4DAY = CB5.95
|
||||||
|
DATE4DOW = CB5.96
|
||||||
|
DATE4FORMAT = CB5.97
|
||||||
|
DATE4FORMAT_MDX = CB5.98
|
||||||
|
DATE4INIT = CB5.99
|
||||||
|
DATE4LONG = CB5.100
|
||||||
|
DATE4MONTH = CB5.101
|
||||||
|
DATE4TIME_NOW = CB5.102
|
||||||
|
DATE4TODAY = CB5.103
|
||||||
|
DATE4YEAR = CB5.104
|
||||||
|
|
||||||
|
E4 = CB5.105
|
||||||
|
E4CODE = CB5.106
|
||||||
|
E4DESCRIBE = CB5.107
|
||||||
|
E4EXIT = CB5.108
|
||||||
|
E4EXIT_TEST = CB5.109
|
||||||
|
E4HOOK = CB5.110
|
||||||
|
E4SET = CB5.111
|
||||||
|
E4SEVERE = CB5.112
|
||||||
|
E4TEXT = CB5.113
|
||||||
|
|
||||||
|
EXPR4CALC_CREATE = CB5.114
|
||||||
|
EXPR4DOUBLE = CB5.115
|
||||||
|
EXPR4FREE = CB5.116
|
||||||
|
EXPR4KEY = CB5.117
|
||||||
|
EXPR4KEY_LEN = CB5.118
|
||||||
|
EXPR4LEN = CB5.119
|
||||||
|
EXPR4PARSE = CB5.120
|
||||||
|
EXPR4SOURCE = CB5.121
|
||||||
|
EXPR4TRUE = CB5.122
|
||||||
|
EXPR4TYPE = CB5.123
|
||||||
|
EXPR4VARY = CB5.124
|
||||||
|
|
||||||
|
F4ASSIGN = CB5.125
|
||||||
|
F4ASSIGN_CHAR = CB5.126
|
||||||
|
F4ASSIGN_DOUBLE = CB5.127
|
||||||
|
F4ASSIGN_FIELD = CB5.128
|
||||||
|
F4ASSIGN_INT = CB5.129
|
||||||
|
F4ASSIGN_LONG = CB5.130
|
||||||
|
F4ASSIGN_N = CB5.131
|
||||||
|
F4ASSIGN_PTR = CB5.132
|
||||||
|
F4BLANK = CB5.133
|
||||||
|
F4CHAR = CB5.134
|
||||||
|
F4DATA = CB5.135
|
||||||
|
F4DECIMALS = CB5.136
|
||||||
|
F4DOUBLE = CB5.137
|
||||||
|
F4INT = CB5.138
|
||||||
|
F4LEN = CB5.139
|
||||||
|
F4LONG = CB5.140
|
||||||
|
F4MEMO_ASSIGN = CB5.150
|
||||||
|
F4MEMO_ASSIGN_N = CB5.151
|
||||||
|
F4MEMO_FREE = CB5.152
|
||||||
|
F4MEMO_LEN = CB5.153
|
||||||
|
F4MEMO_NCPY = CB5.154
|
||||||
|
F4MEMO_PTR = CB5.155
|
||||||
|
F4MEMO_STR = CB5.156
|
||||||
|
F4NAME = CB5.157
|
||||||
|
F4NCPY = CB5.158
|
||||||
|
F4PTR = CB5.159
|
||||||
|
F4STR = CB5.160
|
||||||
|
F4TRUE = CB5.161
|
||||||
|
F4TYPE = CB5.162
|
||||||
|
|
||||||
|
FILE4CLOSE = CB5.163
|
||||||
|
FILE4CREATE = CB5.164
|
||||||
|
FILE4FLUSH = CB5.165
|
||||||
|
FILE4LEN = CB5.166
|
||||||
|
FILE4LEN_SET = CB5.167
|
||||||
|
FILE4LOCK = CB5.168
|
||||||
|
FILE4LOCK_HOOK = CB5.169
|
||||||
|
FILE4OPEN = CB5.170
|
||||||
|
FILE4OPTIMIZE = CB5.171
|
||||||
|
FILE4OPTIMIZE_WRITE = CB5.172
|
||||||
|
FILE4READ = CB5.173
|
||||||
|
FILE4READ_ALL = CB5.174
|
||||||
|
FILE4READ_ERROR = CB5.175
|
||||||
|
FILE4REFRESH = CB5.176
|
||||||
|
FILE4REPLACE = CB5.177
|
||||||
|
FILE4TEMP = CB5.178
|
||||||
|
FILE4UNLOCK = CB5.179
|
||||||
|
FILE4WRITE = CB5.180
|
||||||
|
FILE4SEQ_READ = CB5.181
|
||||||
|
FILE4SEQ_READ_ALL = CB5.182
|
||||||
|
FILE4SEQ_READ_INIT = CB5.183
|
||||||
|
FILE4SEQ_WRITE = CB5.184
|
||||||
|
FILE4SEQ_WRITE_FLUSH = CB5.185
|
||||||
|
FILE4SEQ_WRITE_INIT = CB5.186
|
||||||
|
FILE4SEQ_WRITE_REPEAT = CB5.187
|
||||||
|
|
||||||
|
I4CLOSE = CB5.188
|
||||||
|
I4CREATE = CB5.189
|
||||||
|
I4LOCK = CB5.190
|
||||||
|
I4OPEN = CB5.191
|
||||||
|
I4REINDEX = CB5.192
|
||||||
|
I4TAG = CB5.193
|
||||||
|
I4TAG_INFO = CB5.194
|
||||||
|
I4UNLOCK = CB5.195
|
||||||
|
|
||||||
|
L4ADD = CB5.196
|
||||||
|
L4ADD_AFTER = CB5.197
|
||||||
|
L4ADD_BEFORE = CB5.198
|
||||||
|
L4FIRST = CB5.199
|
||||||
|
L4LAST = CB5.200
|
||||||
|
L4NEXT = CB5.201
|
||||||
|
L4POP = CB5.202
|
||||||
|
L4PREV = CB5.203
|
||||||
|
L4REMOVE = CB5.204
|
||||||
|
|
||||||
|
MEM4ALLOC = CB5.205
|
||||||
|
MEM4CREATE = CB5.206
|
||||||
|
MEM4FREE = CB5.207
|
||||||
|
MEM4RELEASE = CB5.208
|
||||||
|
MEM4RESET = CB5.209
|
||||||
|
|
||||||
|
RELATE4BOTTOM = CB5.210
|
||||||
|
RELATE4CHANGED = CB5.211
|
||||||
|
RELATE4CREATE_SLAVE = CB5.212
|
||||||
|
RELATE4DO = CB5.213
|
||||||
|
RELATE4DO_ONE = CB5.214
|
||||||
|
RELATE4ERROR_ACTION = CB5.215
|
||||||
|
RELATE4FREE = CB5.216
|
||||||
|
RELATE4INIT = CB5.217
|
||||||
|
RELATE4LOCK = CB5.218
|
||||||
|
RELATE4MATCH_LEN = CB5.219
|
||||||
|
RELATE4NEXT = CB5.220
|
||||||
|
RELATE4QUERY_SET = CB5.221
|
||||||
|
RELATE4SKIP = CB5.222
|
||||||
|
RELATE4SKIP_ENABLE = CB5.223
|
||||||
|
RELATE4SORT_SET = CB5.224
|
||||||
|
RELATE4TOP = CB5.225
|
||||||
|
RELATE4TYPE = CB5.226
|
||||||
|
RELATE4UNLOCK = CB5.227
|
||||||
|
|
||||||
|
SORT4FREE = CB5.229
|
||||||
|
SORT4GET = CB5.230
|
||||||
|
SORT4GET_INIT = CB5.231
|
||||||
|
SORT4INIT = CB5.232
|
||||||
|
SORT4PUT = CB5.233
|
||||||
|
|
||||||
|
T4ADD = CB5.234
|
||||||
|
T4ADD_CALC = CB5.235
|
||||||
|
T4BOTTOM = CB5.236
|
||||||
|
T4DOWN = CB5.237
|
||||||
|
T4DUMP = CB5.238
|
||||||
|
T4EOF = CB5.239
|
||||||
|
T4FLUSH = CB5.240
|
||||||
|
T4FREE_ALL = CB5.241
|
||||||
|
T4GO = CB5.242
|
||||||
|
T4KEY = CB5.243
|
||||||
|
T4OPEN = CB5.244
|
||||||
|
T4POSITION = CB5.245
|
||||||
|
T4POSITION_SET = CB5.246
|
||||||
|
T4RECNO = CB5.247
|
||||||
|
T4REMOVE = CB5.248
|
||||||
|
T4REMOVE_CALC = CB5.249
|
||||||
|
T4SEEK = CB5.250
|
||||||
|
T4SKIP = CB5.251
|
||||||
|
T4TOP = CB5.252
|
||||||
|
T4UP = CB5.253
|
||||||
|
T4UP_TO_ROOT = CB5.254
|
||||||
|
|
||||||
|
U4ALLOC = CB5.255
|
||||||
|
U4ALLOC_AGAIN = CB5.256
|
||||||
|
U4ALLOC_ER = CB5.257
|
||||||
|
U4ALLOC_FREE = CB5.258
|
||||||
|
U4FREE = CB5.259
|
||||||
|
U4NAME_CHAR = CB5.260
|
||||||
|
U4NAME_EXT = CB5.261
|
||||||
|
U4NAME_PIECE = CB5.262
|
||||||
|
U4NCPY = CB5.263
|
||||||
|
U4YYMMDD = CB5.264
|
||||||
|
|
||||||
|
EXPR4CALC_LOOKUP = CB5.265
|
||||||
|
C4TRIM_N = CB5.266
|
||||||
|
EXPR4FUNCTIONS = CB5.267
|
||||||
|
C4DTOA45 = CB5.268
|
||||||
|
EXPR4CALC_DELETE = CB5.269
|
||||||
|
E4LOOKUP = CB5.270
|
||||||
|
C4UPPER = CB5.271
|
||||||
|
EXPR4CALC_NAME_CHANGE = CB5.272
|
||||||
|
EXPR4CALC_MODIFY = CB5.273
|
||||||
|
RELATE4FREE_RELATE = CB5.274
|
||||||
|
EXPR4CALC_MASSAGE = CB5.275
|
||||||
|
D4UPDATE_HEADER = CB5.276
|
||||||
|
U4SWITCH = CB5.277
|
||||||
|
DATE4FORMAT_MDX2 = CB5.278
|
||||||
|
EXPR4DOUBLE2 = CB5.279
|
||||||
|
D4POSITION2 = CB5.280
|
||||||
|
F4DOUBLE2 = CB5.281
|
||||||
|
T4POSITION2 = CB5.282
|
||||||
|
F4MEMO_SET_LEN = CB5.283
|
||||||
|
C4LTOA45 = CB5.284
|
||||||
|
I4ADD_TAG = CB5.285
|
||||||
|
EXPR4CALC_RESET = CB5.286
|
||||||
|
T4IS_DESCENDING = CB5.287
|
||||||
|
I4IS_PRODUCTION = CB5.288
|
||||||
|
T4UNIQUE = CB5.289
|
||||||
|
D4SEEK_N = CB5.290
|
||||||
|
C4DLL_INST = CB5.291
|
||||||
|
C4ATOD2 = CB5.292
|
||||||
|
F4MEMO_CHECK = CB5.293
|
||||||
|
D4UNLOCK_APPEND = CB5.294
|
||||||
|
D4UNLOCK_DATA = CB5.295
|
||||||
|
D4UNLOCK_FILE = CB5.296
|
||||||
|
D4UNLOCK_RECORDS = CB5.297
|
||||||
|
C4LOWER = CB5.298
|
||||||
|
I4CHECK = CB5.299
|
||||||
|
U4REMOVE = CB5.300
|
||||||
|
|
||||||
|
AREA4CREATE = CB5.301
|
||||||
|
AREA4FREE = CB5.302
|
||||||
|
AREA4NUMOBJECTS = CB5.303
|
||||||
|
AREA4OBJFIRST = CB5.304
|
||||||
|
AREA4OBJLAST = CB5.305
|
||||||
|
AREA4OBJNEXT = CB5.306
|
||||||
|
AREA4OBJPREV = CB5.307
|
||||||
|
AREA4PAGEBREAK = CB5.308
|
||||||
|
GROUP4CREATE = CB5.309
|
||||||
|
GROUP4FOOTERFIRST = CB5.310
|
||||||
|
GROUP4FOOTERNEXT = CB5.311
|
||||||
|
GROUP4FOOTERPREV = CB5.312
|
||||||
|
GROUP4FREE = CB5.313
|
||||||
|
GROUP4HEADERFIRST = CB5.314
|
||||||
|
GROUP4HEADERNEXT = CB5.315
|
||||||
|
GROUP4HEADERPREV = CB5.316
|
||||||
|
GROUP4NUMFOOTERS = CB5.317
|
||||||
|
GROUP4NUMHEADERS = CB5.318
|
||||||
|
GROUP4REPEATHEADER = CB5.319
|
||||||
|
GROUP4RESETEXPRSET = CB5.320
|
||||||
|
GROUP4RESETPAGE = CB5.321
|
||||||
|
GROUP4RESETPAGENUM = CB5.322
|
||||||
|
GROUP4SWAPFOOTER = CB5.323
|
||||||
|
GROUP4SWAPHEADER = CB5.324
|
||||||
|
OBJ4BITMAPSTATICCREATE = CB5.325
|
||||||
|
OBJ4BITMAPSTATICFREE = CB5.326
|
||||||
|
OBJ4BITMAPFILECREATE = CB5.327
|
||||||
|
OBJ4BITMAPFILEFREE = CB5.328
|
||||||
|
OBJ4BITMAPFIELDCREATE = CB5.329
|
||||||
|
OBJ4BITMAPFIELDFREE = CB5.330
|
||||||
|
OBJ4BRACKETS = CB5.331
|
||||||
|
OBJ4CALCCREATE = CB5.332
|
||||||
|
OBJ4CALCFREE = CB5.333
|
||||||
|
OBJ4DATEFORMAT = CB5.334
|
||||||
|
OBJ4DECIMALS = CB5.335
|
||||||
|
OBJ4DELETE = CB5.336
|
||||||
|
OBJ4DISPLAYONCE = CB5.337
|
||||||
|
OBJ4DISPLAYZERO = CB5.338
|
||||||
|
OBJ4EXPRCREATE = CB5.339
|
||||||
|
OBJ4EXPRFREE = CB5.340
|
||||||
|
OBJ4FIELDCREATE = CB5.341
|
||||||
|
OBJ4FIELDFREE = CB5.342
|
||||||
|
OBJ4FRAMECORNERS = CB5.343
|
||||||
|
OBJ4FRAMECREATE = CB5.344
|
||||||
|
OBJ4FRAMEFILL = CB5.345
|
||||||
|
OBJ4FRAMEFREE = CB5.346
|
||||||
|
OBJ4JUSTIFY = CB5.347
|
||||||
|
OBJ4LEADINGZERO = CB5.348
|
||||||
|
OBJ4LINECREATE = CB5.349
|
||||||
|
OBJ4LINEFREE = CB5.350
|
||||||
|
OBJ4LINEWIDTH = CB5.351
|
||||||
|
OBJ4LOOKAHEAD = CB5.352
|
||||||
|
OBJ4NUMERICTYPE = CB5.353
|
||||||
|
OBJ4STYLE = CB5.354
|
||||||
|
OBJ4TEXTCREATE = CB5.355
|
||||||
|
OBJ4TEXTFREE = CB5.356
|
||||||
|
OBJ4TOTALCREATE = CB5.357
|
||||||
|
OBJ4TOTALFREE = CB5.358
|
||||||
|
RELATE4RETRIEVE = CB5.359
|
||||||
|
RELATE4SAVE = CB5.360
|
||||||
|
REPORT4CAPTION = CB5.361
|
||||||
|
REPORT4CURRENCY = CB5.362
|
||||||
|
REPORT4DATEFORMAT = CB5.363
|
||||||
|
REPORT4DECIMAL = CB5.364
|
||||||
|
REPORT4DO = CB5.365
|
||||||
|
REPORT4FREE = CB5.366
|
||||||
|
REPORT4GENERATEPAGE = CB5.367
|
||||||
|
REPORT4GROUPFIRST = CB5.368
|
||||||
|
REPORT4GROUPLAST = CB5.369
|
||||||
|
REPORT4GROUPLOOKUP = CB5.370
|
||||||
|
REPORT4GROUPNEXT = CB5.371
|
||||||
|
REPORT4GROUPPREV = CB5.372
|
||||||
|
REPORT4GROUPHARDRESETS = CB5.373
|
||||||
|
REPORT4INIT = CB5.374
|
||||||
|
REPORT4MARGINS = CB5.375
|
||||||
|
REPORT4NUMGROUPS = CB5.376
|
||||||
|
REPORT4NUMSTYLES = CB5.377
|
||||||
|
REPORT4OUTPUT = CB5.378
|
||||||
|
REPORT4PAGEFREE = CB5.379
|
||||||
|
REPORT4PAGEHEADERFOOTER = CB5.380
|
||||||
|
REPORT4PAGEINIT = CB5.381
|
||||||
|
REPORT4PAGEMARGINSGET = CB5.382
|
||||||
|
REPORT4PAGEOBJFIRST = CB5.383
|
||||||
|
REPORT4PAGEOBJNEXT = CB5.384
|
||||||
|
REPORT4PAGESIZE = CB5.385
|
||||||
|
REPORT4PAGESIZEGET = CB5.386
|
||||||
|
REPORT4PARENT = CB5.387
|
||||||
|
REPORT4PRINTERSELECT = CB5.388
|
||||||
|
REPORT4PRINTERDC = CB5.389
|
||||||
|
REPORT4QUERYSET = CB5.390
|
||||||
|
REPORT4RETRIEVE = CB5.391
|
||||||
|
REPORT4SAVE = CB5.392
|
||||||
|
REPORT4SEPARATOR = CB5.393
|
||||||
|
REPORT4SORTSET = CB5.394
|
||||||
|
REPORT4STYLEFIRST = CB5.395
|
||||||
|
REPORT4STYLELAST = CB5.396
|
||||||
|
REPORT4STYLENEXT = CB5.397
|
||||||
|
REPORT4STYLESELECT = CB5.398
|
||||||
|
REPORT4STYLESELECTED = CB5.399
|
||||||
|
REPORT4STYLESHEETLOAD = CB5.400
|
||||||
|
REPORT4STYLESHEETSAVE = CB5.401
|
||||||
|
REPORT4TITLEPAGE = CB5.402
|
||||||
|
REPORT4TITLESUMMARY = CB5.403
|
||||||
|
REPORT4TOSCREEN = CB5.404
|
||||||
|
STYLE4COLOR = CB5.405
|
||||||
|
STYLE4CREATE = CB5.406
|
||||||
|
STYLE4DELETE = CB5.407
|
||||||
|
STYLE4FREE = CB5.408
|
||||||
|
STYLE4INDEX = CB5.409
|
||||||
|
STYLE4LOOKUP = CB5.410
|
||||||
|
TOTAL4CREATE = CB5.411
|
||||||
|
TOTAL4FREE = CB5.412
|
||||||
|
REPORT4DATADO = CB5.413
|
||||||
|
TOTAL4ADDCONDITION = CB5.414
|
||||||
|
REPORT4DATAFILESET = CB5.415
|
||||||
|
REPORT4DATAGROUP = CB5.416
|
||||||
|
OBJ4DATAFIELDSET = CB5.417
|
||||||
|
WRITEDIB = CB5.418
|
||||||
|
GETDIB = CB5.419
|
||||||
|
PALETTESIZE = CB5.420
|
||||||
|
FINDDIBBITS = CB5.421
|
||||||
|
REPORT4INDEX_TYPE = CB5.422
|
||||||
|
AREA4ADD_OBJECT = CB5.423
|
||||||
|
OBJ4REMOVE = CB5.424
|
||||||
|
GROUP4POSITIONSET = CB5.425
|
||||||
|
REPORT4GET_PRINTERIC = CB5.426
|
||||||
|
TOTAL4LOOKUP = CB5.427
|
||||||
|
AREA4SORT_OBJ_TREE = CB5.428
|
||||||
|
RELATE4LOOKUP_DATA = CB5.429
|
||||||
|
REPORT4RETRIEVE2 = CB5.430
|
||||||
|
RELATE4SAVE2 = CB5.431
|
||||||
|
RELATE4RETRIEVE2 = CB5.432
|
||||||
|
U4DELAY_SEC = CB5.433
|
||||||
|
|
||||||
|
T4BLOCK = CB5.451
|
||||||
|
T4CHECK = CB5.452
|
||||||
|
|
||||||
|
CTRL4ADDCODE = CB5.500
|
||||||
|
CTRL4CODELISTINIT = CB5.501
|
||||||
|
CTRL4FREECTRLNODE = CB5.502
|
||||||
|
CTRL4FREECODELIST = CB5.503
|
||||||
|
CTRL4GETCTRLCODE = CB5.504
|
||||||
|
CTRL4INITVBX = CB5.505
|
||||||
|
CTRL4INITVBXUNDO = CB5.506
|
||||||
|
|
||||||
|
|
||||||
|
X4BOTTOM = CB5.600
|
||||||
|
X4INIT_WORK = CB5.601
|
||||||
|
X4FILTER_TEST = CB5.602
|
||||||
|
X4GO = CB5.603
|
||||||
|
X4SEEK = CB5.604
|
||||||
|
X4SEEK_DOUBLE = CB5.605
|
||||||
|
X4SKIP = CB5.606
|
||||||
|
X4TOP = CB5.607
|
||||||
|
I4CHANGED = CB5.608
|
Loading…
x
Reference in New Issue
Block a user