home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 8 Other / 08-Other.zip / ASCIIS.ZIP / CREAT1.MOD < prev    next >
Text File  |  1992-11-29  |  3KB  |  94 lines

  1. IMPLEMENTATION MODULE Creat1;
  2. FROM Lib IMPORT Fill,ParamCount,ParamStr;
  3.  
  4. FROM Str IMPORT Pos,Copy,Append,Length,Slice,Delete,Subst;
  5. FROM Strings1 IMPORT Crunch,CRLF;
  6. FROM FIO IMPORT Open,Create,RdStr,File,Close,Exists,
  7.      MkDir,ChDir,IOcheck,RdBin;
  8. FROM IO IMPORT WrStr,WrLn;
  9. FROM SQLEnv IMPORT SQLGSTRD,SQLGSTDM;
  10. FROM SQLStuff IMPORT SQLErrorHandler;
  11. IMPORT SQLPREP;
  12.  
  13. (****
  14. EXEC SQL WHENEVER SQLERROR GOTO error;
  15. ***)
  16. (****
  17. EXEC SQL INCLUDE SQLDA;
  18. ***)
  19. (***** included by precompiler *)
  20. FROM SQLDA IMPORT sqlda,sqldaPtr;
  21. FROM SQLCA IMPORT sqlca;
  22. FROM SQLStuff IMPORT AllocSQLDA, DeallocSQLDA,SQLErrorHandler;
  23. CONST
  24. xxProgName = CHR(111) +CHR(65) +CHR(65) +CHR(66) +CHR(65) +CHR(68) +CHR(67) +CHR(67) +
  25.         CHR(69) +CHR(68) +CHR(32) +CHR(32) +CHR(32) +CHR(32) +CHR(32) +CHR(32) +
  26.         CHR(99) +CHR(114) +CHR(101) +CHR(97) +CHR(116) +CHR(49) +CHR(32) +CHR(32) +
  27.         CHR(84) +CHR(66) +CHR(49) +CHR(113) +CHR(79) +CHR(85) +CHR(76) +CHR(73) +
  28.         CHR(48) +CHR(32) +CHR(32) +CHR(32) +CHR(32) +CHR(32) +CHR(32) +CHR(32);
  29. VAR 
  30.   SQLca : sqlca; (* communications area*)
  31.   SQLda : sqldaPtr; (* data area (if needed ) *)
  32.   RC    : CARDINAL;
  33.  
  34. TYPE
  35.   CharSet = SET OF CHAR;
  36.  
  37. CONST
  38.   SQLChars  = CharSet{'0'..'9','A'..'Z','a'..'z',':',',','.','_','*',
  39.                       '^','=','>','<','(',')','"',"'",'/','+','-',';'};
  40.  
  41.  
  42. VAR
  43.  J : CARDINAL;
  44.  Tmp    : ARRAY[0..2000] OF CHAR;
  45.  DBName : ARRAY[0..30] OF CHAR;  (*Name OF database - input param 1 *)
  46.   InFileName: ARRAY[0..65] OF CHAR;  (* name OF sql file - input param 2*)
  47.   F : File;
  48.   Sz : CARDINAL;
  49. PROCEDURE ProcessCmd();
  50. BEGIN
  51.  
  52.   ParamStr(DBName,1);
  53.   ParamStr(InFileName,2);
  54.   Crunch(InFileName);
  55.   InFileName[8] := 0C;
  56.   Crunch(DBName);
  57.   RC := SQLGSTRD(0,Length(DBName),'S',SQLca,NIL,DBName);
  58.   IF SQLca.sqlcode <> 0
  59.     THEN HALT;
  60.     END;
  61.   Append(InFileName,'.sql');
  62.   F := Open(InFileName);
  63.   Sz := RdBin(F,Tmp,SIZE(Tmp));
  64.   Close(F);
  65.   FOR J := 0 TO Length(Tmp) DO
  66.     IF NOT (Tmp[J] IN SQLChars)
  67.       THEN Tmp[J] := ' ';
  68.       END;
  69.   END;
  70.  
  71.   WHILE Pos(Tmp,';') < MAX(CARDINAL) DO
  72.     Slice(Cmd,Tmp,0,Pos(Tmp,';'));
  73.     Delete(Tmp,0,Pos(Tmp,';') + 2);
  74.     WrLn();
  75.     WrStr('Processing SQL Statement ');
  76.     WrLn();
  77.     WrStr(Cmd);
  78. (****
  79.     EXEC SQL EXECUTE IMMEDIATE :Cmd;
  80. ***)
  81.   RC := SQLPREP.SQLASTRT(ADR(xxProgName),NIL,SQLca); (* get semaphore*)
  82. RC := SQLPREP.SQLASETS(Length(Cmd),Cmd,NIL);
  83.   RC := SQLPREP.SQLACALL(23,1,0,0,NIL);
  84.  IF SQLca.sqlcode < 0
  85.    THEN SQLErrorHandler(0,"DATA BASE ERROR",SQLca);
  86.    END;
  87.   RC := SQLPREP.SQLASTOP(NIL);(* release semephore*)
  88.  END;
  89.  
  90. END ProcessCmd;
  91.  
  92. END Creat1.
  93.  
  94.