�@BASIC�̌���d�l�͈̔͂ł͎��s�ł��Ȃ����Ƃ��CWin32 API�𗘗p���邱�ƂŎ��s�\�ƂȂ邱�Ƃ�����܂��B
�@(����)�\�iBASIC(ver. 5.1)�ł́CWin32 API�C����сCWin32 API�Ɠ����Ăяo���K��̂��Ƃɍ쐬���ꂽDLL�������p�ł��܂��BBorland Delphi��C++�Ȃǂ̃V�X�e���J�������p���Ď��삵��DLL�����p�\�ł��B
�@Win32 API�̗��p�ɂ́C���p������API�̊����ƁC���ꂪ�܂܂��DLL�̃t�@�C�����Ƃ��K�v�ł��B
�܂��CAPI�̈����ɂ́C�j�[���j�b�N�ł͂Ȃ����ۂ̐��l��^����K�v������܂��B
�������[�����������͕�����ϐ��𗘗p���čs���܂��B
���ɁC�ϐ��ւ̃|�C���^�������Ƃ��ėv������DLL���̗��p�ɂ͒��ӂ��K�v�ł��B
�g���������ƃV�X�e�����N���b�V�������邱�Ƃ�����̂ŁC�Ӗ��̕�����Ȃ��l�͎���o���Ă͂����܂���i�T���v���v���O�������R�s�[���y�[�X�g�œ\��t���Ď��s���Ă݂���x�ɂƂǂ߂Ă��������j�B
�@���p�Ғ�`������ѕ��v���O������DLL���𗘗p���Ē�`���邱�Ƃ��ł���B�����C�O���̂ǂ���ł��悢��DEF���ɂ͓K�p�ł��Ȃ��B
DLL�𗘗p���Ē�`������i�܂��́C���v���O�����j�ł́C FUNCTION�s�i�܂���SUB�s�j�ƁCEND FUNCTION�s�i�܂���END SUB�s�j�̊ԂɎ��̌`����ASSIGN���������B
ASSIGN DLL�t�@�C���� �C����
��
FUNCTION GetVersion ASSIGN "kernel32.dll","GetVersion" END FUNCTION
�@DLL�t�@�C�����́C���p���悤�Ƃ�������܂�DLL�̖��̂��w�肷��B�����́CDLL���œo�^����Ă��閼�̂��w�肷��B�����́C�p���̑召�̈Ⴂ�����ʂ���B
�@DLL�t�@�C�����Ɗ����͕�����萔�Ŏw�肷��B�|��DLL�����[�h����̂ŁC������ϐ��𗘗p���Ďw�肷�邱�Ƃ͂ł��Ȃ��B
���l�^�̈����͏�ʃr�b�g���̂Ă�32�r�b�g�����Ƃ��ĕ]�����ēn���B���v���O�����̏ꍇ�ł����Ă��ϐ������Ƃ͂Ȃ炸�C��ɒl�����ɂȂ�B
������^�̈����́C1�����ڂւ�32�r�b�g�|�C���^�Ƃ��ēn�����BBASIC�̕�����̓k���ŏI�[���ꂽ������Ƃ��ė��p�ł���B
�@�������C������w�肵���Ƃ��́C�k���ւ̃|�C���^�ł͂Ȃ��C�k��(�ʏ�C�����|�C���^���Ӗ�����)��n���B
���l���Ƃ��Ē�`����ƁCDLL�̊����琧�䂪�߂��ꂽ�Ƃ���EAX���W�X�^�̒l�����l�ƂȂ�B���̒l�́C���32�r�b�g�̕����t�������Ƃ��ĉ��߂���B
�@��������Ƃ��Ē�`����ƁCDLL�̊����琧�䂪�߂��ꂽ�Ƃ���EAX���W�X�^�̒l���k���I�[��ASCII(�܂���Shift-JIS)������ւ̃|�C���^�Ƃ��ĉ��߂���iver. 5.7.8�j�B
��P
DECLARE EXTERNAL FUNCTION MesBox LET n=MesBox(0,"Hello","BASIC",3) PRINT n END EXTERNAL FUNCTION MesBox(owner,text$,caption$,flag) ASSIGN "user32.dll","MessageBoxA" END FUNCTION
�@���l��32�r�b�g�̕����t�������ɂȂ�B�����Ȃ������Ƃ��ĉ��߂������Ƃ��́CMOD(x,2^32)��K�p����B
�@Win32 API�Ō��ʂ̌^��BOOL�ł�����̂́C��[�����^�B
�@���ʌ^�����l�łȂ�API���C����ꂽ�l�͕ʂ�API�Ăяo���̈����Ƃ��Ďg�����Ƃ��ł���B
�@Win32 API�ŕ�������������ɂ́CANSI�������ΏۂƂ�����̂ƁC16�r�b�g�̃��j�R�[�h�������ΏۂƂ�����̂�2�킪���邪�C�\�iBASIC Ver.7�̓��������R�[�h��Shift-JIS�Ȃ̂ŁCANSI������������ق��C�܂�C�����̖�����A�ɂȂ��Ă���ق���p����B�i��̗�ł́CMessageBoxA ���w�肵�Ă���j
Note.
�@Ver. 7�ȊO�iVer.8�CVer.0.9�CBASICAcc�CParact BASIC�j�͓��������R�[�h��UTF-8�Ȃ̂ŁCWindows API�Ŗ�����W�����ق���p���C�l��n���Ƃ���WIDE$����p����16�r�b�g���j�R�[�h�����ɕϊ��������̂�n���C�l�����Ƃ���ImportWIDE$��p���Ď����16�r�b�g���j�R�[�h�������UTF-8�ɕϊ�����B
�ϐ��ւ̃|�C���^�������Ɏ���DLL�����Ăяo���Ƃ��́C������ϐ��������ɂ���B
��Note���T�|�[�gDLL��p���ă������[�ڑ��삵�Ĉ�����p�ӂ��邱�Ƃ��ł���
�i �� MEMORY.DLL�ɂ�钼�ڃ������[�����j�B
��������o�C�g�z��Ƃ݂Ȃ����߂ɁC�K�v�ɉ�����OPTION CHARACTER BYTE��錾����B
�ϐ���DLL���Ƀp�����[�^��n�����߂ɂ̂ݗp�����CDLL�����ϐ������������邱�Ƃ��Ȃ��ꍇ�́C�����������Ƃ��Ă��悢�B
����DLL�������ʂ�߂����߂ɕϐ���������������̂ł���Ƃ��́C����2�_�ɒ��ӂ���B
REPEAT$���Ȃǂ𗘗p���āC�����Ƃ��ė^���镶����ϐ��̕�������DLL�̊����K�v�Ƃ���傫���ȏ�Ƃ��Ă����B
���̕ϐ��̒l�͑��̕ϐ����������č쐬�������̂ł����Ă͂Ȃ炸�C�܂��C���̕ϐ��͑��̕ϐ��ɑ���������Ƃ̂�����̂ł����Ă��Ȃ�Ȃ��B
�i���̕ϐ�����̑���Œl��^����ꂽ������ϐ��́C���̈�����̕ϐ��Ƌ��L����B���������āC���̕ϐ��̎��̈��DLL��������������ƁC������Ƃ̕ϐ��̒l������������Ă��܂��B�j
������l�͕���������w��𗘗p���Ď��o���B
��Q
DECLARE EXTERNAL FUNCTION CurrDir$
PRINT CurrDir$
END
EXTERNAL FUNCTION CurrDir$
OPTION CHARACTER BYTE
FUNCTION GetCurrentDirectory(n,s$)
ASSIGN "kernel32.dll","GetCurrentDirectoryA"
END FUNCTION
LET s$=Repeat$(" ", 200)
LET n=GetCurrentDirectory(200,s$)
LET CurrDir$=s$(1:n)
END FUNCTION
�@�����^�̕ϐ��ւ̃|�C���^�������Ƃ���API���Ăяo���Ƃ����C�\�iBASIC�ł͕�����ϐ��������ɂ��Ȃ���Ȃ�Ȃ��B
���Ƃ��C32�r�b�g�̐����^�̕ϐ��ɒl�����ꍇ�́C
LET s$=Repeat$("#", 4)�@�����s����4�o�C�g�̗̈���m�ۂ��Ă���DLL�Ɉ����n���B�ϐ���������������Ƃ��́C���ꂼ��̕ϐ����Ƃ�Repeat$�������s����B
Intel x86�n��CPU�ł́C�����o�C�g�Ő��l��\���Ƃ��C��ʌ����A�h���X��ʂɈʒu
����B������ϐ����ŕ����̓A�h���X�̏����ɔz�u�����̂ŁC������ɂ͉��ʃo�C�g���珇�Ɋi�[����Ă���B
���������āC
���ʂ́C�����Ȃ������Ƃ��ĉ��߂���ꍇ�C ORD(s$(1:1)) + 2^8 * ORD(s$(2:2)) + 2^16 * ORD(s$(3:3)) + 2^24 * ORD(s$(4:4)) �B
�����t�������ɂ������ꍇ�́C���ʂ�2^31�ȏ�ł���Ƃ���2^32��������B
�@�\���̂��̂��̂������Ƃ���ꍇ�́C4�o�C�g���Ƃɋ���ď��Ɉ����Ƃ��ė^����B
�@�\���̂������Ƃ��ėv������API�ɂ́C�\���̂ւ̃|�C���^�������Ƃ��ė^������̂�����B���ʂ�߂��K�v������ꍇ�ƁC�K�v�ȃ������̑傫�����s��̏ꍇ�ɂ��̌`���p������B���̏ꍇ�C�K�v�Ƃ����o�C�g���̒����̕�����ϐ���p�ӂ��C���̓��e��API�̗v���ɍ��킹�Ĉ����Ƃ��ēn���B
�@32�r�b�g����n����ϐ��ɖ��ߍ��ނ̂ɁC���̊O������`�����p�ł���B
Note. Ver. 7.4.8�ȍ~�ł͓������ʂ����g����DWORD$�����炩���ߗp�ӂ���Ă���B
EXTERNAL FUNCTION DWORD$(n) OPTION CHARACTER byte LET r=MOD(n,2^8) LET s$=CHR$(r) LET n=(n-r)/2^8 LET r=MOD(n,2^8) LET s$=s$ & CHR$(r) LET n=(n-r)/2^8 LET r=MOD(n,2^8) LET s$=s$ & CHR$(r) LET n=(n-r)/2^8 LET r=MOD(n,2^8) LET DWORD$=s$ & CHR$(r) END FUNCTION
32�r�b�g�������A�Ȃ����\���̂̏ꍇ�́C���̊��̌��ʂ�A������悢�B
���ʂ����o���ꍇ�́C��q�̐����^�̕ϐ��ւ̃|�C���^�������Ƃ���ꍇ�Ɠ��l�B
������ɖ��ߍ��܂ꂽ32�r�b�g�����t�����������o���O�������Ƃ��Ď����B
����p�́C��������̃o�C�g�P�ʂł̈ʒu��\���B�擪��0�Ƃ���B
EXTERNAL FUNCTION int32(s$,p) OPTION CHARACTER byte LET n=0 FOR i=1 TO 4 LET n=n+256^(i-1)*ORD(s$(p+i:p+i)) NEXT i IF n<2^31 THEN LET int32=n ELSE LET int32=n-2^32 END FUNCTION
�@16�r�b�g����n����ϐ��ɖ��ߍ��ނƂ��́C���̊O������`�����p�ł���B
Note. Ver. 7.4.8�ȍ~�ɂ́C�������ʂ����g����WORD$�����炩���ߗp�ӂ���Ă���B
EXTERNAL FUNCTION WORD$(n) OPTION CHARACTER byte LET r=MOD(n,2^8) LET s$=CHR$(r) LET n=(n-r)/2^8 LET r=MOD(n,2^8) LET WORD$=s$ & CHR$(r) END FUNCTION
16�r�b�g�������A�Ȃ����\���̂̏ꍇ�́C���̊��̌��ʂ�A������B
������ɖ��ߍ��܂ꂽ16�r�b�g�����t�����������o���O���������Ɏ����B
����p�́C��������̃o�C�g�P�ʂł̈ʒu��\���B�擪��0�Ƃ���B
EXTERNAL FUNCTION int16(s$,p) OPTION CHARACTER byte LET n=0 FOR i=1 TO 2 LET n=n+256^(i-1)*ORD(s$(p+i:p+i)) NEXT i IF n<2^15 THEN LET int16=n ELSE LET int16=n-2^16 END FUNCTION
WIN32 API�ɂ́C�\���̂ɕ�����ւ̃|�C���^��u�����̂�����B
������ϐ��̎��A�h���X(�ŏ��̕����ւ̃|�C���^)���擾������́CCharPrev���g���č���B
EXTERNAL FUNCTION VarPtr(s$) FUNCTION CharPrev(s$,t$) ASSIGN "user32.dll","CharPrevA" END FUNCTION LET VarPtr=CharPrev(s$,s$) END FUNCTION
��Note���\�iBASIC�ł́C������ϐ��̎��A�h���X�́C������ϐ��ɌŗL�̂��̂ł͂Ȃ��C�ϐ��l�̏�������������ƕω�����B
Win32 API�ɂ́C�R�[���o�b�N����v��������̂�����B
�\�iBASIC(ver.5.3.2�ȍ~)�ł́C�ő�10�܂ł�CallBack�����g�����Ƃ��ł��C�����́C0����9�܂ł̔ԍ��Ŏ��ʂ���B
CallBack���̎w��
�@CallBack���Ƃ��ė��p����葱����FUNCTION�s�܂���SUB�s�̖����Ɏ��̌`����CallBack���̎��ʔԍ����w�肷��B���ʔԍ���0����9�܂ł̒萔�łȂ���Ȃ�Ȃ��B
���ʔԍ��́C�����̌��ɂ��Ă������Ƃ��]�܂����B
FUNCTION ����(�������X�g),CALLBACK ���ʔԍ�
SUB ���v���O������(�������X�g),CALLBACK ���ʔԍ�
�@�����͂��ׂĒl�����ɂȂ�B�k���I�[������ւ̃|�C���^�͕�����ϐ��ɎƂ邱�Ƃ��ł���B
�@����ȊO�̈����͂��ׂ�32�r�b�g�����t�����Ƃ��Đ��l�ϐ����Ɋ��蓖�ĂȂ���Ȃ�Ȃ��B
�i�k���I�[������ւ̃|�C���^�ȊO�̃|�C���^����ϐ��ŎĂ͂����Ȃ��B�j
�@32�r�b�g����傫�����������́C32�r�b�g���Ƃɕ������Đ��l�ϐ��Ŏ��B
�@�R�[���o�b�N���̑S����(���ߑ����܂�)�̃o�C�g���ƁC�������X�g�ɏ����������̐���4�{�Ƃ���v���Ȃ���Ȃ�Ȃ��B
�@�^�U�l�͐��l�ϐ��Ŏ��B��[����^�Ɖ��߂���悢�B
�@�^�U�l�����̌���(�߂�l)�Ƃ��ėv�����ꂽ�Ƃ��́C�^�̂Ƃ�1(�܂���-1)�C�U�̂Ƃ�0��Ԃ��悢�̂����ʁB
CallBack���̃A�h���X�̎擾
�@CallBack���̃A�h���X��CallBackAdr���Ŏ擾����B�����́CCallBack���̎��ʔԍ��B
�g�p��
100 OPTION CHARACTER BYTE 110 LET Name$ = REPEAT$(CHR$(0),255) 120 CALL EnumWindows(CallBackAdr(1), 0) 130 SUB EnumWindows(IpEnumFunc, IPalam) 140 ASSIGN "user32.dll","EnumWindows" 150 END SUB 160 FUNCTION GetWindowText(hWnd,IpString$,cch) 170 ASSIGN "user32.dll","GetWindowTextA" 180 END FUNCTION 190 FUNCTION Enum(Handle), CALLBACK 1 200 IF GetWindowText(Handle, Name$, LEN(Name$))<>0 THEN 210 PRINT NAME$(1:POS(NAME$,CHR$(0))-1) 220 END IF 230 LET Enum = -1 240 END FUNCTION 250 END
����
�@CallBack������̌Ăяo���ɗ��p���Ȃ��ł��������B
�@�����̌��̌��͖|�ɂ����s���ɂ��`�F�b�N����܂���B�����̌��̌��́C�V�X�e���ɏd��ȑ�����^����\��������܂��B
DLL���ʂ�DLL�ɂ�������Ăяo���Ƃ��C���炩���߂���DLL��ǂݍ���ł����K�v�����邩���m��Ȃ��B
���̏ꍇ�CDll���������ɂ���LoadLibrary�����s���C���̌��ʁi�n���h���j�𐔒l�ϐ��ɕۑ��i�������C���̒l��0�̂Ƃ��CLoadLibrary�͎��s���Ă���j�B���̒l�Ɗ�����GetProcAddress�ɓn���ăA�h���X���擾����B�K�v�Ȃ��Ȃ�����C�ۑ����Ă�����DLL�̃n���h���������ɂ���FreeLibrary���Ăяo���B
FUNCTION LoadLibrary(s$) ASSIGN "kernel32.dll","LoadLibraryA" END FUNCTION FUNCTION GetProcAddress(n,s$) ASSIGN "kernel32.dll","GetProcAddress" END FUNCTION SUB FreeLibrary(n) ASSIGN "kernel32.dll","FreeLibrary" END SUB
�@Full BASIC�̑g���݊��𗘗p���āC2�i�C16�i�\�����ꂽ���l���������Ƃ��ł���B
BVAL(a$,2) a$���2�i�����Ƃ��ĉ��߂����l�B BVAL(a$,16) a$���16�i�����Ƃ��ĉ��߂����l�B BSTR$(n,2) �̐���n��2�i���Ƃ��ĕ\������������B BSTR$(n,16) �̐���n��16�i���Ƃ��ĕ\������������B
�� BSTR$(MOD(n, 2^32),16)�@32�r�b�g�̕���������n���Ȃ�������16�i�\�L������ɕϊ�����B
�@DLL�ɂ͈����̎n����������̌��ȂǂɊւ����܂܂�Ă��Ȃ�����C�����̌��̌��͖|�ɂ����s���ɂ��`�F�b�N���邱�Ƃ��ł��Ȃ��B�i�ꌩ�C����ɓ��삵�Ă���悤�Ɍ����邱�Ƃ�����̂ŁC���ӁB�j
�ϐ������Ƃ��ėp���镶����̒������s�����Ă����Ƃ��CDLL���̎��s���̂͐���ɍs����\���������B�������C���̕ϐ����邢��BASIC�̃V�X�e�����g�p����̈悪�j��邽�߁C�Ȍ�̓���Ɏx����������BDLL���̌Ăяo���͐���ɍs���邽�߁C�����������ɂ����o�O�ɂȂ�B
���l�ϐ��ւ̃|�C���^���w�肷�ׂ��Ƃ���ɐ��l�ϐ����w�肷��ƁC���̒l���A�h���X�Ƃ��ĉ��߂��C������DLL�����f�[�^�������߂����ƂɂȂ�B�i�^��������extype=-9900�̃G���[�ɂȂ邪�C�^����������BASIC�̃f�[�^�̈悾�ƃG���[�ɂȂ炸�Ɏ��s����Ă��܂��j
�@Visual BASIC�Ŏg�����߂�Win32 API���́C�\�iBASIC�Ŏg�����߂ɕK�v�ȏ���ׂĊ܂܂�Ă���̂ł����Ɏg����B�i�������CVB�Ŏg����API�����ׂď\�iBASIC�Ŏg����킯�ł͂Ȃ��B�j
VBWin32API���錾���W���[�� �@�ʓr�CLhaplus����LZH�𓀃\�t�g���K�v�B
���́CVB�Ŏg�����߂̉���ł͂Ȃ����CDLL������������Ă���B
Win32 API �����X�g
�ȉ��́CC����ɂ��Win32 API�̉���B�ړI��API���ǂ�DLL�Ɋ܂܂�邩���C�ʓr�C���ׂ�K�v������B
Win32 API����
Visual BASIC�����̏������ƂɊ���`�����ꍇ�͎��̂悤�ɂ���B
��
Declare Function PolyBezierTo Lib "gdi32" ( ByVal hDC As Long, ByRef Points As POINT, ByVal PointNum As Long) As Long
FUCTION PolyBezierTo(hDC, Points$, PointNum) ASSIGN "gdi32.dll","PolyBezierTo" END FUNCTION
��
Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" ( ByVal FileName As String,
ByRef FindData As WIN32_FIND_DATA) As Long
FUNCTION FindFirstFile(FileName$, FindData$) ASSIGN "kernel32.dll","FindFirstFileA" END FUNCTION
��
Declare Function CloseHandle Lib "kernel32.dll" (ByVal hObject As Long) As Boolean
FUNCTION CloseHandle(hObject) ASSIGN "kernel32.dll","CloseHandle" END FUNCTION
Lib�ɑ����Ďw�肳��Ă���̂�DLL���B".dll"��t�����Ďw�肷��B
Alias�ɑ����Ďw�肳��Ă���̂��CDLL�����BAlias���Ȃ��Ƃ��́C���������̂܂�DLL�����B
ByVal ��� As Long�i���邢�́CByVal ��� As Integer�CByVal ��� As Byte�j�ƂȂ��Ă���ϐ��ɂ͐��l�ϐ������w�肷��B
ByVal ��� As String �ƂȂ��Ă���ϐ��ɂ͕�����ϐ������w�肷��B
ByRef ��� As ��� �ƂȂ��Ă���ϐ��ɂ͕�����ϐ������w�肷��B
ByVal ��� As Any �ƂȂ��Ă���ϐ��́C�g�����ɂ���ăA�h���X����������C���l���������肷��̂ŁC�ړI�ɂ���ĕ�����ϐ��C���l�ϐ����g��������B�Ȃ��C������ς���C����API�����g������`�����������Ă����Ȃ��B
ByVal ��� As String �ƂȂ��Ă���ꍇ�ł��C���ʂ������߂����߂ɕ�����ϐ����g���Ă���ꍇ�́C�ϐ������̏ꍇ�̒��ӂ����Ă͂܂�B
��Note��Visual BASIC 6 �ŁCByVal��ByRef���w�肳��Ȃ�������ByRef(�Q�Ɠn��)�B�������CByVal�ɑ����ĕ����̈������������Ƃ��C�����ɂ�ByVal�����肳���B
Function�̌��ʂ̌^�����ł����Ă��C���l���Ƃ��Ē�`����B
���ʌ^��Boolean�̂Ƃ��́C��[��������ꂽ�Ƃ��^�Ɖ��߂���悢�B
���ʌ^��String�̏ꍇ�CBASIC�ł������Ƃ��ė��p���邱�Ƃ͂ł��Ȃ����C�ʂ�API���̈����Ƃ��ė��p���邱�Ƃ͂ł���B�����������Ƃ��C�������͐��l�ϐ��Ő錾���Ă����B
�@���̖߂�l�𗘗p���Ȃ�DLL���͕��v���O�����ɂ��Ă��悢�B
��
SUB CharUpper(s$) ASSIGN "user32.dll","CharUpperA" END SUB
��Memo��CharUpper�𐔒l���Ƃ��Đ錾�����Ƃ��C�������ɕ�����^����ƁC���ʂ͕�����]������̂Ɏg�p������Ɨ̈���w�����C���̗̈�́C����`�̎��s���ɉ������Ă��܂��̂ŁC���̒l�́C����ꂽ���_�ňӖ��������Ă���B
�@VB��integer��16�r�b�g�����t�������Clong��32�r�b�g�����t�������B
��
Type POINTL
x As Long
y As Long
End Type
POINTL�^��8�o�C�g���L����B
POINTL�^�̕ϐ�����ϐ�s$�ɖ��ߍ��ނƂ��́Cs$�� DWORD$(x) & DWORD$(y)��A������悢�B
��
Type POINTS
x As Integer
y As Integer
End Type
POINTS�^��4�o�C�g���L����B
POINTS�^�̕ϐ�����ϐ�s$�ɖ��ߍ��ނƂ��́Cs$�� WORD$(x) & WORD$(y)��A������悢�B
��
Type OUTPUT_DEBUG_STRING_INFO
lpDebugStringData As String
fUnicode As Integer
nDebugStringLength As Integer
End Type
String�͕�����ւ̃|�C���^�łS�o�C�g���L����B
�����Ӂ�
�@4�o�C�g�̕ϐ��͕K��4�̔{���̃A�h���X�ɒu�����Ȃǂ̋K�������邽�߂ɁC�O�����珇�ɃT�C�Y�����Z���Ă������ꍇ�ƈʒu���قȂ邱�Ƃ�����i��������ɖ��ʂȗ̈悪�ł���j�B
���Ƃ��C1�o�C�g�̕ϐ��̎���4�o�C�g�̕ϐ����Ȃ���Ƃ��́C�Ԃ�3�o�C�g�̖��ߑ�������B
��
Type ACE_HEADER
AceType As Byte
AceFlags As Byte
AceSize As Long
End TypeACE_HEADER�^��8�o�C�g���L���CAceFlags��AceSize�̊ԂɂQ�o�C�g�̖��ߑ�������B
�@Visual BASIC��&H�`�`��16�i�����Ӗ�����B������&��long�^�̈Ӗ��i�������Ă����Ȃ��j
�� &H1000�́CBVAL("1000",16)�ɏ����ς���B
�� 12&�́C���ʂ�12�Ɖ��߂���B16�i���ł͂Ȃ��B
�\�iBASIC�ɂ͒萔�錾�̍\���͂Ȃ��̂ŁC�ϐ��ւ̑���ɒu��������B
��@�@Public Const HELP_COMMAND = &H102&
�@ �́CLET HELP_COMMAND = BVAL("102",16) �ɕς���B
���_�CLET HELP_COMMAND = 258�@�@ �ł��悢�B
�@Windows�̃R���\�[������o�͂ɗ��p����B
�R���\�[���o�͂̌�C�R���\�[�����͂��t����B���������������͂��ăG���^�[�L�[�������B
100 DECLARE EXTERNAL FUNCTION GetStdHandle
110 DECLARE EXTERNAL SUB AllocConsole,FreeConsole,WriteFile,CloseHandle
120 LET o$=REPEAT$("#",4) ! 4�o�C�g�m��
130 CALL AllocConsole
140 LET STD_INPUT_HANDLE=-10
150 LET STD_OUTPUT_HANDLE=-11
160 LET n=GetStdHandle(STD_OUTPUT_HANDLE)
170 FOR i=1 TO 30 ! �o�͕�����̍쐬
180 LET s$=STR$(i) & " " & STR$(SQR(i)) & CHR$(13) & CHR$(10)
190 CALL WriteFile(n, s$ ,LEN(s$),o$,0)
200 NEXT i
210 CALL CloseHandle(n)
220 LET n=GetStdHandle(STD_INPUT_HANDLE)
230 LET inp$=REPEAT$("#",1) ! 1�o�C�g�m��
240 DO
250 CALL ReadFile(n,inp$,1,o$,0) ! �L�[����
260 PRINT inp$(1:1);
270 IF inp$=CHR$(10) THEN EXIT DO ! �G���^�[�L�[�������ƏI���
280 LOOP
290 CALL CloseHandle(n)
300 CALL FreeConsole
310 END
320 EXTERNAL FUNCTION GetStdHandle(n)
330 ASSIGN "kernel32.dll","GetStdHandle"
340 END FUNCTION
350 EXTERNAL SUB AllocConsole
360 ASSIGN "kernel32.dll","AllocConsole"
370 END SUB
380 EXTERNAL SUB FreeConsole
390 ASSIGN "kernel32.dll","FreeConsole"
400 END SUB
410 EXTERNAL SUB WriteFile(n,s$,LENGTH,o$,a)
420 ASSIGN "kernel32.dll","WriteFile"
430 END SUB
440 EXTERNAL SUB ReadFile(n,s$,LENGTH,o$,a)
450 ASSIGN "kernel32.dll","ReadFile"
460 END SUB
470 EXTERNAL SUB CloseHandle(n)
480 ASSIGN "kernel32.dll","CloseHandle"
490 END SUB
�@Windows API��createFile�ڗp���ăt�@�C����ǂށB
100 OPTION CHARACTER BYTE
110 DECLARE EXTERNAL FUNCTION CreateFile
120 DECLARE EXTERNAL SUB ReadFile,CloseHandle
130 LET Name$="C:\BASICw32\README.TXT" ! ���݂̃e�L�X�g�t�@�C�����w�肷��
140 LET GENERIC_READ=BVAL("80000000",16)
150 LET OPEN_EXISTING=3
160 LET FILE_ATTRIBUTE_NORMAL=BVAL("80",16)
170 LET s$=REPEAT$("#",1) ! 1�o�C�g�m��
180 LET w$=REPEAT$("#",4) ! 4�o�C�g�m��
190 LET hfile=CreateFile(Name$,GENERIC_READ,0,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0)
200 IF hfile<>-1 THEN
210 DO
220 LET t$=""
230 DO
240 CALL ReadFile(hfile,s$,1,w$,0)
250 IF s$=CHR$(13) THEN ! chr$(13)�̎���chr$(10)�ł���Ɖ���
260 CALL ReadFile(hfile,s$,1,w$,0)
270 EXIT DO
280 END IF
290 IF ORD(w$(1:1))=0 THEN EXIT DO
300 LET t$ = t$ & s$(1:1)
310 ! ��̕���(1:1)���Ȃ��ƁCt$=""�̂Ƃ��Cs$��t$�ɑ������Ă��܂��B
320 LOOP
330 PRINT t$
340 IF ORD(w$(1:1))=0 THEN EXIT DO
350 LOOP
360 CALL closeHandle(hfile)
370 ELSE
380 PRINT "�G���["
390 END IF
400 END
410
420 EXTERNAL FUNCTION CreateFile(Name$, acc ,share, sec, create, attrib, handle)
430 ASSIGN "kernel32.dll","CreateFileA"
440 END FUNCTION
450
460 EXTERNAL SUB ReadFile(handle, s$, l, w$, ov )
470 ASSIGN "kernel32.dll","ReadFile"
480 END SUB
490
500 EXTERNAL SUB CloseHandle(handle)
510 ASSIGN "kernel32.dll","CloseHandle"
520 END SUB
�@�N����̏��ł��B
100 DECLARE EXTERNAL FUNCTION FndWnd
110 DECLARE EXTERNAL FUNCTION ShowWnd
120 LET hWnd=FndWnd("TTextForm","")
130 IF hWnd>0 THEN
140 LET n=ShowWnd(hWnd, 3)
150 END IF
160 ! �����ɕK�v�ȏ���(PRNIT���Cetc)������
170 END
180
190 EXTERNAL FUNCTION FndWnd(lpClassName$,lpWindowName$)
200 ASSIGN "user32.dll","FindWindowA"
210 END FUNCTION
220
230 EXTERNAL FUNCTION ShowWnd(hWnd, nCmdShow)
240 ASSIGN "user32.dll","ShowWindow"
250 END FUNCTION
ShowWnd(hWnd, 3)�@�̑�Q������ HIDE =�@�@�@�@�@�@�@0 NORMAL =�@�@�@�@�@�@1 SHOWMINIMIZED =�@�@ 2 MAXIMIZE =�@�@�@�@�@3 SHOWNOACTIVATE =�@�@4 SHOW =�@�@�@�@�@�@�@5 MINIMIZE =�@�@�@�@�@6 SHOWMINNOACTIVE =�@ 7 SHOWNA =�@�@�@�@�@�@8 RESTORE =�@�@�@�@�@ 9 SHOWDEFAULT =�@�@�@10 FORCEMINIMIZE =�@�@11
FndWnd�̑�1�p�����[�^�́C�`��E�B���h�E�ł́C"TPaintForm"�CInput�_�C�A���O�ł�"TInputDialog"�ł��B
BASIC���N�����Ă���Ƃ��́CFndWnd�̑�2�p�����[�^�ɁC�E�B���h�E�̏�[�ɕ\�������E�B���h�E�̖��O�i�v���O�������̖�����.TXT�܂���.BMP�ɕς������́j���w�肵�܂��B
���⑫��CHARACTER INPUT���̎��s���ɕ\�������E�B���h�E��"TCharInput"�ł��B
DECLARE EXTERNAL FUNCTION midiOpen
DECLARE EXTERNAL FUNCTION midiMsg
DECLARE EXTERNAL FUNCTION midiClose
! ���p�\��MIDI�f�o�C�X�̐����l��
DECLARE EXTERNAL FUNCTION midiGet
OPTION CHARACTER byte ! �����T�C�Y���P�o�C�g�ɂ���
LET hmid$=REPEAT$("*",4) ! �l�o�C�g���p��
LET Note=70 !���K(&H00����&H7F(127))
LET Inst=0 !�y��No(�f�l���F�ԍ��ɏ����H�j
LET Vol=BVAL("7F",16) !����(&H00����&H7F(127))
IF midiGet<1 THEN STOP ! MIDI�f�o�C�X���Ȃ���ΏI��
LET n=midiOpen(hMid$, -1, 0, 0, 0)
! ������𐔒l�ɕϊ�
LET hMidiOut=0
LET k=1
FOR i=1 TO 4
LET hMidiOut = hMidiOut + k*ORD(hMid$(i:i))
LET k = k*256
NEXT i
LET n=midiMsg(hMidiOut, BVAL("c0",16) + Inst * 256)
LET n=midiMsg(hMidiOut, BVAL("90",16) + Note * 256 + Vol * 256 * 256)
WAIT DELAY 1
LET n=midiMsg(hMidiOut, BVAL("80",16) + Note * 256)
LET n=midiClose(hMidiOut)
END
EXTERNAL FUNCTION midiOpen(lphMidiOut$,uDeviceID,dwCallback,dwInstance,dwFlags)
ASSIGN "winmm.dll","midiOutOpen"
END FUNCTION
EXTERNAL FUNCTION midiMsg(hMid,Dt)
ASSIGN "winmm.dll","midiOutShortMsg"
END FUNCTION
EXTERNAL FUNCTION midiClose(hMid)
ASSIGN "winmm.dll","midiOutClose"
END FUNCTION
EXTERNAL FUNCTION midiGet
ASSIGN "winmm.dll","midiOutGetNumDevs"
END FUNCTION
DECLARE EXTERNAL FUNCTION PlaySound LET S$="***.wav" LET n=PlaySound(S$, "", 128) END EXTERNAL FUNCTION PlaySound(pszSound$, hmod$, fdwSound) ASSIGN "winmm.dll","PlaySoundA" END FUNCTION
�@Visual BASIC��C����p�ɍ��ꂽDLL���g�����Ƃ��ł���B
8�r�b�g�C���邢��16�r�b�g�̈����́C�X�^�b�N�ɂ�32�r�b�g���E�ɂ��킹�ăZ�b�g����邽�߁C�����̈�����32�r�b�g�l��^���Ă��x��͂Ȃ��i��ʃr�b�g�����������j�B
���ʌ^��8�r�b�g�C���邢��16�r�b�g�ł�����̒l���g���Ƃ��́CMOD(x,2^8)�܂���MOD(x,2^16)��K�p���ď�ʃr�b�g���̂Ă�BVisual BASIC��Boolean�^��16�r�b�g�Ȃ̂ŁCVisual BASIC��p�ɍ��ꂽDLL���g���ꍇ�͒��ӂ��K�v��������Ȃ��B
�f�B�X�p�b�`�C���^�[�t�F�[�X�ɑΉ����Ȃ�COM�R���|�[�l���g�C��ʕ\����ActiveX�Ȃǂ́CVB�CDelphi�CC++�ȂǁC�������DLL�����������p����B
��Note��stdcall�iWin32 API�̌Ăяo���K��j�ŃR���p�C�����ꂽ�����Ώۂł��邪�Ccdecl(C����̕W���̌Ăяo���K��)�ŃR���p�C�����ꂽ�����Ăяo���Ă��Ƃ肠���������B
��Note��C����ō쐬���ꂽDLL�ɂ́CDLL���œo�^����Ă���������}�j���A���ɏ����Ă���̂ƈႤ���̂�����B
��Note��DLL�����[�h�ł��Ȃ��G���[�ɂȂ�Ƃ��́CDLL���t���p�X���Ŏw�肷�邩�CDLL��path�̒ʂ����t�H���_�ɒu���C���邢�́C�v���O������DLL������̂Ɠ����t�H���_�ɕۑ����Ă�����s����B
UNHLA32.DLL�́C�}�j���A����C��������ɏ�����Ă��邪�C�g����B
�ł��P����LHA�݊��@�\�������Ǝ��̂悤�ɂȂ�B
100 REM UNLHA32.DLL��LHA�Ƃ��Ďg��
110 SUB UNLHA(HWND,CMD$,BUF,NBUF)
120 ASSIGN "UNLHA32.DLL","Unlha"
130 END SUB
140 SUB LHA(CMD$)
150 CALL UNLHA(0,CMD$,0,0)
160 END SUB
170 SET DIRECTORY "c:\****" ! �J�����g�E�f�B���N�g�����ړ�����
180 CALL LHA("a ****** *****.txt") ! �����ɁCLHA�̃R�}���h���w�肷��
190 END
�@VBIOSCM�́CVB6�p�ƂȂ��Ă��邪�C�P���ɓǂݑւ��邾���Ŏg����B
Visual BASIC�� x and 1 �́CMOD(x,2)�ɒu��������悢�B
�T���v���v���O�����iWindows Me��Windows XP(SP2)�œ�����m�F�BIBM PC�݊��@�ȊO�ł͐�Ɏ��s���Ȃ��ł��������B�j
DECLARE EXTERNAL FUNCTION IOSCM_Start, InpB, InpD, InpW
DECLARE EXTERNAL SUB IOSCM_Stop, OutB, OutD, OutW
REM DOS/V�@�Ńr�[�v����炷
IF MOD(IOSCM_Start,2)=0 THEN
LET port=BVAL("61",16)
LET n=InpB(port)
CALL OutB(port,INT(n/4)*4+3) !�炷
PAUSE
CALL OutB(port,INT(n/4)*4) !�~�߂�
CALL IOSCM_Stop
ELSE
PRINT "IOSCM Init Error!!"
END IF
END
EXTERNAL FUNCTION InpB (port)
FUNCTION InpB_org(port)
ASSIGN "VBIOSCM_DLL.DLL", "_InpB@4"
END FUNCTION
LET InpB=MOD(InpB_org(port),2^8) ! ����8�r�b�g�����o��
END FUNCTION
EXTERNAL FUNCTION InpW (port)
FUNCTION InpW_org(port)
ASSIGN "VBIOSCM_DLL.DLL", "_InpW@4"
END FUNCTION
LET InpW=MOD(InpW_org(port),2^16) ! ����16�r�b�g�����o��
END FUNCTION
EXTERNAL FUNCTION InpD(port)
ASSIGN "VBIOSCM_DLL.DLL", "_InpD@4"
END FUNCTION
EXTERNAL SUB OutB(port, dat)
ASSIGN "VBIOSCM_DLL.DLL", "_OutB@8"
END SUB
EXTERNAL SUB OutW(port, dat)
ASSIGN "VBIOSCM_DLL.DLL", "_OutW@8"
END SUB
EXTERNAL SUB OutD(port, dat)
ASSIGN "VBIOSCM_DLL.DLL", "_OutD@8"
END SUB
EXTERNAL FUNCTION IOSCM_Start
ASSIGN "VBIOSCM_DLL.DLL", "_IOSCM_Start@0"
END FUNCTION
EXTERNAL SUB IOSCM_Stop
ASSIGN "VBIOSCM_DLL.DLL", "_IOSCM_Stop@0"
END SUB
�@jconv.dll�́C DLL�ɓo�^���ꂽ���̖��O���}�j���A���̋L�q�ƈقȂ�Ƃ������������ꂽDLL�ł���B
�܂��Cjconv.h������ƁC
typedef enum {
JC_AUTO,
JC_UTF_7,
JC_ISO2022JP,
JC_UTF_8,
JC_SHIFT_JIS,
JC_EUC_JP,
JC_UTF_16_B,
JC_UTF_16_L,
JC_UCS_4_B
} JC_JCODE_TYPE;
�Ƃ���B����́CJC_JCODE_TYPE�^�̒�`�ŁCJC_AUTO�CJC_UTF_7�C����ɁC0����n�܂鐔�l�����Ɋ��蓖�Ă��Ă��邱�Ƃ��Ӗ�����BBASIC�ł́C���ꂼ��ɏ���0����n�܂鐔�l�������Ă����Ύg���₷���B
DLL���̃��C���̊�jconv���g�����߂�
FUNCTION jconv(InType,In$,InLen,OutType,Out$)
�@�@ ASSIGN "jconv.dll","jconv"
END FUNCTION
�Ƃ���ƁC�|�Ɂujconv���݂���Ȃ��v�̃G���[�ɂȂ�B�iDLL�̓��[�h�ł�������ǂ��C���̃G���g���[�|�C���g���݂���Ȃ��Ƃ������Ɓj
DLL Analyze AZUKI�Œ��ׂ�ƁC������jconv�� _jconv@20 �ɕς���Ă��܂��Ă���炵�����Ƃ��킩��B
jconv.dll�̎g�p�T���v���ishift�|JIS�������Windows�̃��j�R�[�h������ɕϊ��j
100 OPTION CHARACTER BYTE
110 SUB MesBoxW(owner,text$,caption$,flag)
120 ASSIGN "user32.dll","MessageBoxW"
130 END SUB
140 FUNCTION jconv(InType,In$,InLen,OutType,Out$)
150 ASSIGN "jconv.dll","_jconv@20"
160 END FUNCTION
170 LET JC_AUTO=0
180 LET JC_UTF_7=1
190 LET JC_ISO2022JP=2
200 LET JC_UTF_8=3
210 LET JC_SHIFT_JIS=4
220 LET JC_EUC_JP=5
230 LET JC_UTF_16_B=6
240 LET JC_UTF_16_L=7
250 LET JC_UCS_4_B=8
260 LET s1$="����ɂ���"
270 LET s2$="BASIC"
280 LET t1$=REPEAT$("##",LEN(s1$)+1) ! ���ʂ���邽�߂̍�Ɨ̈�
290 LET t2$=REPEAT$("##",LEN(s2$)+1) ! ���ʂ���邽�߂̍�Ɨ̈�
300 LET text$=t1$(1:jconv(JC_SHIFT_JIS,s1$,LEN(s1$),JC_UTF_16_L,t1$))
310 LET caption$=t2$(1:jconv(JC_SHIFT_JIS,s2$,LEN(s2$),JC_UTF_16_L,t2$))
320 CALL MesBoxW(0,text$,caption$,3)
330 END
�����P��Visual C++�ō쐬���ꂽDLL�Ŋ�����F�����Ȃ��Ƃ��́C�����̑O��_(�A���_�[�X�R�A)�C�����̌��@�ƈ����̌���4�{������(=�����̃o�C�g��)��t�����Ă݂�B
�����Ӂ� ����͋���ւ̃|�C���^�ł͂Ȃ�null�ɂȂ�̂ŁC�����jconv�ɓn���ƃG���[�ɂȂ�B
���⑫��shift-JIS�������Windows�̃��j�R�[�h������ɕϊ������������Ȃ�Win32 API�łł���B ���̎��DLL���L�p�Ȃ̂́CUTF-8�Ƃ̕ϊ����ł��邱�ƁB
�� ����������̌v�Z ������ɂ�鐔�����v�Z����DLL
����DLL��C����̌Ăяo���K��_cdecl�ł��邪�C�g����B
����DLL�͎����l�̓��o�͂��\���̏�ōs���B�����͍\���̂ւ̃|�C���^�ł���B
�{BASIC�ł͍\���̂̃o�C�g���̕�������m�ۂ��C���̃A�h���X��DLL�ɓn���B
Double�^�����l���\���̏�ɃZ�b�g����̂ɑg����PackDBL$���g���B
180�s��PackDBL$(x)�́Cx��Double�^�ɕϊ�����8�o�C�g�̕�����ɖ��ߍ��ށB
190�s��UnPackDBL���͂��̋t�̑�����s���B
���p�Ғ�`����DWord$��VarPtr��Library�t�H���_��APISUP1.LIB�Œ�`����Ă���̂ŁCMERGE���œǂݍ���ŗ��p����B
100 DECLARE EXTERNAL FUNCTION DWord$, VarPtr 110 OPTION CHARACTER byte 120 FUNCTION StrCalc(PSTRCALC_PARAM$) 130 ASSIGN "StCalc35.dll","StrCalc" 140 END FUNCTION 150 LET x=2.1 160 LET y=3.3 170 LET s$="5*x-4*y" 180 LET Param$=DWord$(VarPtr(s$)) & REPEAT$(CHR$(0), 4+4+4) & PackDBL$(x) & PackDBL$(y) & REPEAT$(CHR$(0),8) 190 IF StrCalc(Param$)=0 THEN PRINT UnPackDBL(Param$(33:40)) 200 END 210 MERGE "APISUP1.LIB"
�@���ʂ̌^��Double�Ȃǂ̎����l��Ԃ�����BASIC�̊��Ɋ��蓖�Ă邽�߂ɂ́C
ASSIGN DLL�t�@�C���� �C���� ,FPU
�̌`��ASSIGN���������B
���̌`��ASSIGN�������s����ƁCFPU�̃X�^�b�N�g�b�v���W�X�^��POP���Ă��̒l��BASIC�̊��l�Ƃ���B
����DLL�ɂ́C
��2�̊�����`����Ă���̂ŁC�����ł́C���̂u�a�p�𗘗p����B
__declspec(dllexport) double Kaiseki(char *mojiretu, int *ERR); �b����p
__declspec(dllexport) double __stdcall Kaiseki_VB(char *mojiretu, int *ERR); �u�a�p
���̊��́C�����Ŗ��O�� _Kaiseki_VB@8 �ƕς���Ă��܂��Ă���B
BASIC�ł͎��̂悤�Ɏg���B
100 FUNCTION kaiseki(s$,e$)
110 ASSIGN "EpMath.dll", "_Kaiseki_VB@8", FPU
120 END FUNCTION
130 INPUT s$
140 LET e$=REPEAT$("1234",1) ! 4�o�C�g�m��
150 LET a=kaiseki(s$,e$)
160 IF ORD(e$(1:1))=0 THEN
170 PRINT a
180 ELSE
190 PRINT "error";ORD(e$(1:1))
200 END IF
210 END
�R�{�G�����ɂ��쐬���ꂽ Windows��ŗ��p�ł���Mersenne Twister�@�ɂ��[�����������[�`���B
�z�[���y�[�W�� Visual BASIC�p�̐錾�Ⴊ����̂ŁC�@�B�I�ɖ|�邾���ŗ��p�ł���B
100 DECLARE EXTERNAL FUNCTION random 110 DECLARE EXTERNAL SUB randomize 120 CALL randomize(567) 130 FOR i=1 TO 100 140 PRINT USING "#.###############": random 150 NEXT i 160 END 170 EXTERNAL FUNCTION random 180 ASSIGN "libMT.DLL" ,"genrand" , FPU 190 END FUNCTION 200 EXTERNAL SUB randomize(seed) 210 ASSIGN "libMT.DLL", "sgenrand" 220 END SUB
����DLL�ɂ�VB�p�̃T���v�����t������̂ŁC�@�B�I�ɖ|��Ύg����B
���̃��C�u�����ɂ͑S����4��DLL���܂܂�邪�C���̂����Cmt19937m.dll�́C��Ɠ��l�Ɏg����B
100 DECLARE EXTERNAL FUNCTION random 110 DECLARE EXTERNAL SUB randomize 120 CALL randomize(4357) 130 FOR i=1 TO 100 140 PRINT USING "#.###############": random 150 NEXT i 160 END 170 EXTERNAL FUNCTION random 180 ASSIGN "mt19937m.dll" ,"genrandm" ,FPU 190 END FUNCTION 200 EXTERNAL SUB randomize(seed) 210 ASSIGN "mt19937m.dll","sgenrandm" 220 END SUB
mt19937ar.dll�̏ꍇ�͎��̂悤�ɂȂ�B
�s�蒷�����z��ւ̎Q�ƈ�����v������init_by_array�͕�����ϐ��������ɂ��ė��p����B
100 DECLARE EXTERNAL FUNCTION genrand_real2, genrand_int32
110 DECLARE EXTERNAL SUB init_by_array, init_genrand
120 LET init_key$=REPEAT$(CHR$(0),16) ! DIM init_key(3) As Long
130 LET init_key$( 1: 2)=CHR$(BVAL("23",16)) & CHR$(BVAL("01",16)) ! init_key(0) = &H123
140 LET init_key$( 5: 6)=CHR$(BVAL("34",16)) & CHR$(BVAL("02",16)) ! init_key(1) = &H234
150 LET init_key$( 9:10)=CHR$(BVAL("45",16)) & CHR$(BVAL("03",16)) ! init_key(2) = &H345
160 LET init_key$(13:14)=CHR$(BVAL("56",16)) & CHR$(BVAL("04",16)) ! init_key(3) = &H456
170 CALL init_by_array(init_key$, 4) ! init_by_array init_key(0), 4
180 ! CALL init_genrand (4357) ! 'init_genrand (4357)
190 FOR j = 1 TO 100
200 PRINT USING "#.###############": genrand_real2
210 NEXT j
220 END
230
1000 ! Public Declare Function genrand_real2 Lib "mt19937ar" () As Double
1010 EXTERNAL FUNCTION genrand_real2
1020 ASSIGN "mt19937ar.dll", "genrand_real2" ,FPU
1030 END FUNCTION
1040
1100 ! Public Declare Function genrand_int32 Lib "mt19937ar" () As Long
1110 EXTERNAL FUNCTION genrand_int32
1120 ASSIGN "mt19937ar.dll" , "genrand_int32"
1130 END FUNCTION
1140
1200 ! Public Declare Sub init_by_array Lib "mt19937ar" (ByRef init_key As Long, ByVal key_length As Long)
1210 EXTERNAL SUB init_by_array (init_key$, key_length)
1220 ASSIGN "mt19937ar.dll", "init_by_array"
1230 END SUB
1240
1300 ! Public Declare Sub init_genrand Lib "mt19937ar" (ByVal seed As Long)
1310 EXTERNAL SUB init_genrand(seed)
1320 ASSIGN "mt19937ar.dll", "init_genrand"
1330 END SUB
���⑫��
�@�@�\��RND��Full BASIC�̗\���Ȃ̂ŁC�����̖��O��RND�ɕς��Ďg�����Ƃ͂ł��܂��C����ȊO�ł���CRANDOM�ȂǁC�K�X�C�ʂ̖��O�ɕς��Ďg�����Ƃ��\�ł��B
��Note��
DLL�����[�h�ł��Ȃ��G���[�ɂȂ�Ƃ��́CDLL���t���p�X���Ŏw�肷�邩�C�v���O������DLL������̂Ɠ����t�H���_�ɕۑ����Ă�����s���Ă��������B
�߂��@�@�@�@DLL�����삷��