[Date Prev][Date Next][Thread Prev][Thread Next]
[Author Index] [Date Index] [Thread Index]
[SQR-USERS Info] [SQRUG Home Page]

Re: Tell Me If I've Got It Right



Jeff,

   ! mod8 ! where ...

does not contain an "end comment".    The second ! is simply part of
the comment which begins at the start of the line.

Ray

[Charset iso-8859-1 unsupported, filtering to ASCII...]
> To all:
>
> Please review this short count routine below (I didn't write it) and tell me
> if my understanding of the routine is correct.  If my understanding of the
> routine is incorrect, please open my understanding.
>
> For the record, I have 15 years of programming experience, but am new to
> SQR3.
>
> Respectfully,
>
> Jeff Wolverton
> American Red Cross
> Falls Church, Virginia
>
>
>         BEGIN-PROCEDURE count_records
>         begin-select
>         COUNT(E.EQNUM)  &eqcount
>                 from equipment e, eqstatus s
>         ! Mod8 !        where  [$where] and s.eqnum(+)=e.eqnum AND E.EQNUM
> NOT IN (SELECT EQNUM FROM EQSTATUS WHERE
>                 where  [$where] and s.eqnum(+)=e.eqnum AND [$regulated2] AND
> E.EQNUM NOT IN (SELECT EQNUM FROM EQSTATUS WHERE
>                 changedate in (SELECT MAX(s.CHANGEDATE)
>                 from eqstatus S, EQUIPMENT E WHERE e.EQNUM=s.EQNUM(+)GROUP
> BY e.EQNUM)
>
>         !       Mod4
>                 AND code = $disposed)
>         ! Mod8  AND [$regulated2] and code = $disposed)
>         !       Mod4
>
>         end-select
>         END-PROCEDURE
>
>
>
>         Here's my dissect:
>
>         COUNT(E.EQNUM)  &eqcount
>                 from equipment e, eqstatus s
>         --> count the e.eqnum records and call the count field eqcount
>
>         ! Mod8 !        where  [$where] and s.eqnum(+)=e.eqnum AND E.EQNUM
> NOT IN (SELECT EQNUM FROM EQSTATUS WHERE
>                 where  [$where] and s.eqnum(+)=e.eqnum AND [$regulated2] AND
> E.EQNUM NOT IN (SELECT EQNUM FROM EQSTATUS WHERE
>                 changedate in (SELECT MAX(s.CHANGEDATE)
>                 from eqstatus S, EQUIPMENT E WHERE e.EQNUM=s.EQNUM(+)GROUP
> BY e.EQNUM)
>
>         !       Mod4
>                 AND code = $disposed)
>         ! Mod8  AND [$regulated2] and code = $disposed)
>         !       Mod4
>         --> First it would be nice to know the values in $where and
> $regulated2.
>         $where will be an equipment number, and $regulated 2 will contain
> one of three values: 1) e.eq9=''Y', 2) e.eq9=''N', or 3) 1=1
>
>         ! Mod8 !        where  [$where] and s.eqnum(+)=e.eqnum AND E.EQNUM
> NOT IN
>         --> the line has a comment, but it also has an end comment, so the
> logic in this line says to count the record if the equipment number in
> $where is found and equipment number from eqstatus = equipment number in
> equipment (the plus sign says I want all the eqstatus records regardless)
> and equipment number is not in the next query
>
>         (SELECT EQNUM FROM EQSTATUS WHERE
>                 where  [$where] and s.eqnum(+)=e.eqnum AND [$regulated2] AND
> E.EQNUM NOT IN
>         --> the logic is the same as the last piece with the addition of
> also including the value of $regulated2
>
>         (SELECT EQNUM FROM EQSTATUS WHERE
>                 changedate in (SELECT MAX(s.CHANGEDATE)
>         --> this logic selects equipment numbers from eqstatus if the field
> changedate (in eqstatus) is = the maximum changedate, e.g., if the highest
> changedate is 20010409, then that's the date with the maximum changedate
>
>         from eqstatus S, EQUIPMENT E WHERE e.EQNUM=s.EQNUM(+) GROUP BY
> e.EQNUM)
>         --> the selection is from eqstatus, and equipment.  When retrieving
> records from equipment the equipment number must match equipment number in
> eqstatus (again we want the records in eqstatus regardless).  Group the
> records by equipment number in equipment.
>
>         AND code = $disposed)
>         --> this is the last piece because the other lines are comments.
> This line says if code = the value in $disposed.
>
>
>         Let's simplify the "weeding out" logic.  Let's says the value of
> $regulated2 = "e.eq9='Y'", and the maximum change date is April 9, 2001
> (20010409).  This would mean that records in eqstatus with a changedate of
> 20010409 and/or records in equipment with eq9='Y' would be bypassed because
> the logic said to exclude them (E.EQNUM NOT IN).
>

----------------------------------------------------------------------
Ray Ontko   rayo@ontko.com   Phone 1.765.935.4283   Fax 1.765.962.9788
Ray Ontko & Co.   Software Consulting Services   http://www.ontko.com/