home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / PRECOM.ZIP / SQLSTUFF.MOD < prev    next >
Text File  |  1992-10-13  |  2KB  |  102 lines

  1. IMPLEMENTATION MODULE SQLStuff;
  2. FROM SQLDA IMPORT sqlda,SQLVar,sqldaPtr,SQLHeader;
  3. FROM SQLCA IMPORT sqlca;
  4. FROM Storage IMPORT ALLOCATE,DEALLOCATE;
  5. FROM SQL IMPORT SQLGINTP;
  6. FROM Lib IMPORT Fill;
  7.  
  8. (*%T pmstuff*)
  9. FROM PMSQL IMPORT PMSQLError;
  10. (*%E *)
  11. IMPORT SQL;
  12.  
  13. FROM FIO IMPORT File, StandardOutput,WrLn,WrStr,WrLngInt;
  14.  
  15. CONST
  16.   DAVarSize  = SIZE(SQLVar);
  17.   DAHeaderSize = SIZE(SQLHeader);
  18.  
  19. PROCEDURE AllocSQLDA( VAR TheDA : sqldaPtr; NbrVars : CARDINAL);
  20. VAR
  21.  S : CARDINAL;
  22.  
  23. BEGIN
  24.   S := DAHeaderSize + (NbrVars * DAVarSize);
  25.   ALLOCATE(TheDA,S);
  26.   Fill(TheDA,S,0);
  27.   TheDA^.header.sqlaid := 'SQLDA  ';
  28.   TheDA^.header.sqln := NbrVars;
  29.   TheDA^.header.sqldabc := LONGINT(S);
  30.  
  31. END AllocSQLDA;
  32.  
  33.  
  34.  
  35. PROCEDURE WhatSize(Var : SQLVar) : CARDINAL;
  36. BEGIN
  37.   CASE Var.type OF
  38.     SQL.SQL_TYP_VARCHAR,
  39.     SQL.SQL_TYP_NVARCHAR,
  40.     SQL.SQL_TYP_LONG,
  41.     SQL.SQL_TYP_NLONG    : RETURN Var.len + SIZE(CARDINAL);
  42.   ELSE RETURN Var.len;
  43.   END; (* end of case *)
  44.  
  45. END WhatSize;
  46.  
  47.  
  48. PROCEDURE DeallocSQLDA(VAR TheDA : sqldaPtr);
  49. VAR
  50.  N : CARDINAL;
  51.  J : CARDINAL;
  52.  S : CARDINAL;
  53. BEGIN
  54.   N := CARDINAL(TheDA^.header.sqldabc);
  55.   Fill(TheDA,N,0);
  56.   DEALLOCATE(TheDA,N);
  57.   TheDA := NIL;
  58. END DeallocSQLDA;
  59.  
  60.  
  61. PROCEDURE DefaultErrorRoutine( Handle : CARDINAL; Msg : ARRAY OF CHAR;
  62.                                CA : sqlca);
  63.  
  64.   (* if the handle = 0 assume the standard output device *)
  65.  
  66. VAR
  67.   H : File;
  68.   L : CARDINAL;
  69.   ErrMsg : ARRAY[0..800] OF CHAR;
  70. BEGIN
  71.  IF Handle = 0
  72.    THEN H := StandardOutput;
  73.    ELSE H := Handle;
  74.  END;
  75.  
  76. (* pm stuff *)
  77. (*%T pmstuff *)
  78.  PMSQLError(Msg,CA);
  79.  RETURN;
  80. (*%E *)
  81.  
  82.  
  83.  WrLn(H);
  84.  WrStr(H,' SQL ERROR - ');
  85.  WrLngInt(H,CA.sqlcode,3);
  86.  WrLn(H);
  87.  WrStr(H,Msg);
  88.  WrLn(H);
  89.  L := SIZE(ErrMsg);
  90.  SQLGINTP(L,60,CA,ErrMsg);
  91.  WrStr(H,ErrMsg);
  92.  WrLn(H);
  93.  WrStr(H,'   * * * * *');
  94.  WrLn(H);
  95.  
  96.  
  97. END DefaultErrorRoutine;
  98.  
  99.  
  100. BEGIN
  101.   SQLErrorHandler := DefaultErrorRoutine;
  102. END SQLStuff.