The following code uses clpfd on swi-prolog, so don't expect it to run as-is on visual-prolog:-(
 Still, I hope it is of use to you!
:- use_module(library(clpfd)).
count_pos([], 0).
count_pos([E|Es], C) :- E #=< 0,            count_pos(Es, C).
count_pos([E|Es], C) :- E #>  0, C #= C0+1, count_pos(Es, C0).
Let's read the clauses in plain English in the direction of the "arrow" :-, that is "right to left".
- count_pos([], 0).
 - 
- The number of positive arithmetic expressions contained in the empty list - []is zero.
 
 
- count_pos([E|Es], C) :- E #=< 0, count_pos(Es, C).
 - 
- If list - Escontains- Cpositive arithmetic expressions
 and if some arithmetic expression- Eis not positive
 then conclude that- [E|Es]also contains- Cpositive arithmetic expressions.
 
 
- count_pos([E|Es], C) :- E #> 0, C #= C0+1, count_pos(Es, C0).
 - 
- If list - Escontains- C0positive arithmetic expressions
 and if some arithmetic expression- Eis positive
 then conclude that- [E|Es]also contains- C0+1positive arithmetic expressions.
 
 
Sample query:
?- count_pos([1,2,3,0,-1,-2], C).
   C = 3
;  false.