home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / PRECOM.ZIP / SAMPLE.ZIP / SAMPLE.SQM < prev    next >
Text File  |  1992-09-28  |  3KB  |  133 lines

  1. IMPLEMENTATION MODULE Sample;
  2. FROM Lists IMPORT Element,GenList;
  3. FROM IO IMPORT WrStrRedirect;
  4. FROM FormIO IMPORT WrF,WrF1,WrF2,WrF3,WrF4,WrF5;
  5. FROM Str IMPORT Copy;
  6.  
  7.  
  8. IMPORT SQLPREP;
  9.  
  10.  
  11. EXEC SQL INCLUDE SQLDA;
  12.  
  13.  
  14. VAR
  15.   StaffRec : Staff;
  16.   OrgRec   : Org;
  17.  
  18.  
  19. PROCEDURE CopyDisplay(Line : ARRAY OF CHAR);
  20. (* intercept the WrFx calls an place in the global display line*)
  21. BEGIN
  22.  Copy(DispLine,Line);
  23. END CopyDisplay;
  24.  
  25.  
  26.  
  27. CLASS IMPLEMENTATION Org;
  28.   (******************************************************)
  29.   (*   SQL CURSORS TO SUPPORT THE CLASS                    *)
  30.   (******************************************************)
  31.  
  32.   EXEC SQL DECLARE GetOrgLst CURSOR FOR
  33.     SELECT * FROM ORG;
  34.  
  35.   EXEC SQL DECLARE GetStaffLst CURSOR FOR
  36.     SELECT * FROM Staff
  37.     WHERE Dept=:DeptNbr;
  38.  
  39.   EXEC SQL DECLARE GetOrg CURSOR FOR
  40.     SELECT * FROM Org
  41.     WHERE DeptNumb = :DeptNbr;
  42.  
  43.   EXEC SQL DECLARE GetStats CURSOR FOR
  44.     SELECT AVG(Salary), MIN(Salary),
  45.            MAX(Salary),SUM(Salary)
  46.     FROM Staff
  47.     WHERE Dept = :DeptNbr;
  48.  
  49.  
  50.   PROCEDURE GetStaffList();
  51.   VAR AStaff : Staff;
  52.   BEGIN
  53.     EXEC SQL OPEN  GetStaffLst;
  54.     IF StaffLst.Initialized()
  55.       THEN StaffLst.Dispose
  56.       ELSE StaffLst.Initialize('');
  57.     END;
  58.     WITH AStaff DO
  59.         SQLca.sqlcode := 0;
  60.         WHILE SQLca.sqlcode = 0 DO
  61.               EXEC SQL FETCH GetStaffLst INTO
  62.                 :ID,:Name :NameNul,:DeptNbr :DeptNul,:Job :JobNul,:Years:YearNul,
  63.             :Salary:SalNul,:Comm:ComNul;
  64.             AStaff.MakeDisplayLine();
  65.                StaffLst.AddElmt(AStaff);
  66.         END;
  67.         EXEC SQL CLOSE GetStaffLst;
  68.     END; (* with astaff *)
  69.     EXEC SQL OPEN GetStats;
  70.     EXEC SQL FETCH GetStats INTO
  71.          :AvgSalary,:MinSalary,:MaxSalary,:TotalSalary;
  72.     EXEC SQL CLOSE GetStats;
  73.  
  74.   END GetStaffList;
  75.  
  76.   PROCEDURE MakeDisplayLine();
  77.  
  78.   BEGIN
  79.     WrF4('%3u  %12s  %12s  %18s',DeptNbr,DeptName,Division,Location  );
  80.     Assign(DispLine);
  81.   END MakeDisplayLine;
  82.  
  83. BEGIN
  84. END Org;  (* end class implementation org *)
  85.  
  86. (* utility to read org table *)
  87.  
  88.   PROCEDURE GetOrgLst(VAR TheList : GenList);
  89.   VAR OrgUnit : Org;
  90.   BEGIN
  91.     EXEC SQL OPEN GetOrgLst;
  92.     IF TheList.Initialized()
  93.       THEN TheList.DisposeList;
  94.       ELSE TheList.InitList;
  95.     END;
  96.     SQLca.sqlcode := 0;
  97.     WHILE SQLca.sqlcode = 0 DO
  98.       WITH OrgUnit DO
  99.       EXEC SQL FETCH GetOrgLst INTO
  100.        :DeptNbr,:DeptName,:Manager,:Division,
  101.        :Location;
  102.       END;
  103.       OrgUnit.MakeDisplayLine();
  104.       TheList.AddItem(OrgUnit);
  105.  
  106.     END;
  107.     EXEC SQL CLOSE getOrgLst;
  108.   END GetOrgLst;
  109.  
  110.  
  111.  
  112.  
  113. CLASS IMPLEMENTATION Staff;
  114.  
  115.   PROCEDURE MakeDisplayLine();
  116.  
  117.   BEGIN
  118.     WrF5('%12s  %4s  %4u  %8.2r,  %8.2r',Name,Job, Years,Salary,Comm );
  119.     Assign(DispLine);
  120.   END MakeDisplayLine;
  121.  
  122. BEGIN
  123. END Staff;   (* end class implementation staff *)
  124.  
  125.  
  126. (* initialization code*)
  127.  
  128. BEGIN
  129.   WrStrRedirect := CopyDisplay;   (* redirect output to copy display*)
  130. END Sample.
  131.  
  132. 
  133.