home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 8 Other
/
08-Other.zip
/
ASCIIS.ZIP
/
CREAT1.MOD
< prev
next >
Wrap
Text File
|
1992-11-29
|
3KB
|
94 lines
IMPLEMENTATION MODULE Creat1;
FROM Lib IMPORT Fill,ParamCount,ParamStr;
FROM Str IMPORT Pos,Copy,Append,Length,Slice,Delete,Subst;
FROM Strings1 IMPORT Crunch,CRLF;
FROM FIO IMPORT Open,Create,RdStr,File,Close,Exists,
MkDir,ChDir,IOcheck,RdBin;
FROM IO IMPORT WrStr,WrLn;
FROM SQLEnv IMPORT SQLGSTRD,SQLGSTDM;
FROM SQLStuff IMPORT SQLErrorHandler;
IMPORT SQLPREP;
(****
EXEC SQL WHENEVER SQLERROR GOTO error;
***)
(****
EXEC SQL INCLUDE SQLDA;
***)
(***** included by precompiler *)
FROM SQLDA IMPORT sqlda,sqldaPtr;
FROM SQLCA IMPORT sqlca;
FROM SQLStuff IMPORT AllocSQLDA, DeallocSQLDA,SQLErrorHandler;
CONST
xxProgName = CHR(111) +CHR(65) +CHR(65) +CHR(66) +CHR(65) +CHR(68) +CHR(67) +CHR(67) +
CHR(69) +CHR(68) +CHR(32) +CHR(32) +CHR(32) +CHR(32) +CHR(32) +CHR(32) +
CHR(99) +CHR(114) +CHR(101) +CHR(97) +CHR(116) +CHR(49) +CHR(32) +CHR(32) +
CHR(84) +CHR(66) +CHR(49) +CHR(113) +CHR(79) +CHR(85) +CHR(76) +CHR(73) +
CHR(48) +CHR(32) +CHR(32) +CHR(32) +CHR(32) +CHR(32) +CHR(32) +CHR(32);
VAR
SQLca : sqlca; (* communications area*)
SQLda : sqldaPtr; (* data area (if needed ) *)
RC : CARDINAL;
TYPE
CharSet = SET OF CHAR;
CONST
SQLChars = CharSet{'0'..'9','A'..'Z','a'..'z',':',',','.','_','*',
'^','=','>','<','(',')','"',"'",'/','+','-',';'};
VAR
J : CARDINAL;
Tmp : ARRAY[0..2000] OF CHAR;
DBName : ARRAY[0..30] OF CHAR; (*Name OF database - input param 1 *)
InFileName: ARRAY[0..65] OF CHAR; (* name OF sql file - input param 2*)
F : File;
Sz : CARDINAL;
PROCEDURE ProcessCmd();
BEGIN
ParamStr(DBName,1);
ParamStr(InFileName,2);
Crunch(InFileName);
InFileName[8] := 0C;
Crunch(DBName);
RC := SQLGSTRD(0,Length(DBName),'S',SQLca,NIL,DBName);
IF SQLca.sqlcode <> 0
THEN HALT;
END;
Append(InFileName,'.sql');
F := Open(InFileName);
Sz := RdBin(F,Tmp,SIZE(Tmp));
Close(F);
FOR J := 0 TO Length(Tmp) DO
IF NOT (Tmp[J] IN SQLChars)
THEN Tmp[J] := ' ';
END;
END;
WHILE Pos(Tmp,';') < MAX(CARDINAL) DO
Slice(Cmd,Tmp,0,Pos(Tmp,';'));
Delete(Tmp,0,Pos(Tmp,';') + 2);
WrLn();
WrStr('Processing SQL Statement ');
WrLn();
WrStr(Cmd);
(****
EXEC SQL EXECUTE IMMEDIATE :Cmd;
***)
RC := SQLPREP.SQLASTRT(ADR(xxProgName),NIL,SQLca); (* get semaphore*)
RC := SQLPREP.SQLASETS(Length(Cmd),Cmd,NIL);
RC := SQLPREP.SQLACALL(23,1,0,0,NIL);
IF SQLca.sqlcode < 0
THEN SQLErrorHandler(0,"DATA BASE ERROR",SQLca);
END;
RC := SQLPREP.SQLASTOP(NIL);(* release semephore*)
END;
END ProcessCmd;
END Creat1.