------------------------------------------------------------------------------------------------------------------------
[BUG/PRB.] VFP 9.0 FIX - SYS(9131) ENABLES OR DISABLES THE MAX() AND MIN() FUNCTIONS IN THE SELECT-SQL COMMAND
January 2026
------------------------------------------------------------------------------------------------------------------------
CCB
1. THE SYS(9131) FUNCTION:
SYS(9131) - Enables or disables the MAX() and MIN() functions in the SELECT-SQL command
Enables or disables the MAX() and MIN() functions in the SELECT-SQL command.
SYS(9131 [, 0 | 1])
Parameters
0
Disables the MAX() and MIN() functions in the SELECT-SQL command.
1
Enables the MAX() and MIN() functions in the SELECT-SQL command. 1 is the startup default for Visual FoxPro Advanced.
Return Value
Character
Remarks
If we disable the MAX() and MIN() functions in the SELECT-SQL command,
we can't use the MAX() and MIN() functions in the SELECT-SQL command,
because there are 2 SQL aggregate functions with the same names.
It is the same as Visual FoxPro 9.0 and earlier versions.
If we enable the MAX() and MIN() functions in the SELECT-SQL command,
we can use the MAX() and MIN() functions in the SELECT-SQL command.
For more information, please refer to:
----------------------------------------------------------------------------------------
| SYS(9131) Setting | Select List Item | Result |
----------------------------------------------------------------------------------------
| SYS(9131,0) | MAX(x1), MIN(x1) | SQL aggregate functions |
| | MAX(x1,x2), MIN(x1,x2) | Function name is missing ) (Error 1300) |
| | MAX[x1], MIN[x1] | Too few arguments (Error 1229) |
| | MAX[x1,x2], MIN[x1,x2] | The MAX() and MIN() functions |
----------------------------------------------------------------------------------------
| SYS(9131,1) | MAX(x1), MIN(x1) | SQL aggregate functions |
| | MAX(x1,x2), MIN(x1,x2) | The MAX() and MIN() functions |
| | MAX[x1], MIN[x1] | Too few arguments (Error 1229) |
| | MAX[x1,x2], MIN[x1,x2] | The MAX() and MIN() functions |
----------------------------------------------------------------------------------------
2. CAUSE:
There are some BUGs in the following code.
3. RESOLUTION:
We can write some code to fix the BUG.
Fun529fca :: ; proc near
push ebp ;0x00529fca : 55
mov ebp , esp ;0x00529fcb : 8bec
pushd 0FFFFFFFFh ;0x00529fcd : 6aff
pushd offset Data922268 ;0x00529fcf : 6868229200
pushd offset Label9160f9 ;0x00529fd4 : 68f9609100
mov eax , dword ptr fs:[00h] ;0x00529fd9 : 64a100000000
push eax ;0x00529fdf : 50
mov dword ptr fs:[00h] , esp ;0x00529fe0 : 64892500000000
push ecx ;0x00529fe7 : 51
push ecx ;0x00529fe8 : 51
mov eax , 02FBCh ;0x00529fe9 : b8bc2f0000
call Fun42c118 ;0x00529fee : e82521f0ff
mov eax , dword ptr [ Data937090 ] ;0x00529ff3 : a191319300
mov dword ptr [ ebp - 28 ] , eax ;0x00529ff8 : 8945e4
push ebx ;0x00529ffb : 53
push esi ;0x00529ffc : 56
push edi ;0x00529ffd : 57
mov dword ptr [ ebp - 24 ] , esp ;0x00529ffe : 8965e8
xor edi , edi ;0x0052a001 : 33ff
mov dword ptr [ ebp + 0FFFFD114h ] , edi ;0x0052a003 : 89bd14d1ffff
push edi ;0x0052a009 : 57
pushd 02710h ;0x0052a00a : 6810270000
push edi ;0x0052a00f : 57
mov ebx , dword ptr [ ebp + 8 ] ;0x0052a010 : 8b5d08
mov eax , ebx ;0x0052a013 : 8bc3
call Fun529bc5 ;0x0052a015 : e8abfbffff
mov dword ptr [ ebp + 0FFFFD0E4h ] , eax ;0x0052a01a : 8985e4d0ffff
mov dword ptr [ ebp + 0FFFFD10Ch ] , edi ;0x0052a020 : 89bd0cd1ffff
lea ecx , dword ptr [ ebp + 0FFFFFDE0h ] ;0x0052a026 : 8d8de0fdffff
mov dword ptr [ ebp + 0FFFFD100h ] , ecx ;0x0052a02c : 898d00d1ffff
mov byte ptr [ ebp + 0FFFFFDE0h ] , 00h ;0x0052a032 : c685e0fdffff00
movsx eax , ax ;0x0052a039 : 0fbfc0
;
; -------------------------------------------------------------------------------------------------------------
; VFP 9.0 FIX - SYS(9131) ENABLES OR DISABLES THE MAX() AND MIN() FUNCTIONS IN THE SELECT-SQL COMMAND
; April 2023
; -------------------------------------------------------------------------------------------------------------
; CCB
;
; SYS(9131) - Enables or disables the MAX() and MIN() functions in the SELECT-SQL command.
;
; 2023/4/11, by ccb
;
cmp eax,9131
je vfpa_sys9131_start
pushd 064h ;0x0052a03c : 6a64
pop esi ;0x0052a03e : 5e
cmp eax , esi ;0x0052a03f : 3bc6
jle Label52a0d0 ;0x0052a041 : 0f8e89067000
mov ecx , 07EAh ;0x0052a047 : b9ea070000
cmp eax , ecx ;0x0052a04c : 3bc1
jg Label52a164 ;0x0052a04e : 0f8f10010000
je Label609b33 ;0x0052a054 : 0f84d9fa0d00
mov ecx , 04F6h ;0x0052a05a : b9f6040000
cmp eax , ecx ;0x0052a05f : 3bc1
jle Label52b6e0 ;0x0052a061 : 0f8e79160000
mov ecx , 07DBh ;0x0052a067 : b9db070000
cmp eax , ecx ;0x0052a06c : 3bc1
jg Label51f355 ;0x0052a06e : 0f8fe152ffff
je Label609700 ;0x0052a074 : 0f8486f60d00
add ecx , 0FFFFFFF9h ;0x0052a07a : 83c1f9
cmp eax , ecx ;0x0052a07d : 3bc1
jg Label4a4938 ;0x0052a07f : 0f8fb3a8f7ff
je Label4f6b07 ;0x0052a085 : 0f847ccafcff
sub eax , 04F7h ;0x0052a08b : 2df7040000
je Label60951e ;0x0052a090 : 0f8488f40d00
dec eax ;0x0052a096 : 48
je Label60950f ;0x0052a097 : 0f8472f40d00
sub eax , 0E4h ;0x0052a09d : 2de4000000
je Label609492 ;0x0052a0a2 : 0f84eaf30d00
sub eax , 01F4h ;0x0052a0a8 : 2df4010000
jne Label462026 ;0x0052a0ad : 0f85737ff3ff
lea eax , dword ptr [ ebp + 0FFFFFDE0h ] ;0x0052a0b3 : 8d85e0fdffff
push eax ;0x0052a0b9 : 50
push dword ptr [ ebp + 12 ] ;0x0052a0ba : ff750c
mov edx , ebx ;0x0052a0bd : 8bd3
call Fun4dc923 ;0x0052a0bf : e85f28fbff
4. APPLIES TO:
VFP 10 (VFP Advanced)
5. REFERENCE WEBSITES:
1, baiyujia.com:
http://www.baiyujia.com
http://www.baiyujia.com/vfpdocuments/f_vfp9fix268.asp
6. OTHER:
For reference only, there is no guarantees.
Any questions or suggestions, please send me an email at ccb2000@163.com.
|