In deinem Programm steht der Close noch an falscher Stelle (mit ODP's) hat das noch nichts zu tun.

Wenn ein Select nur 1 Zeile als Ergebnis hat (bei count sehr wahrscheinlich) kannst du das noch abkürzen:

Select Count(Distinct(rswoc)) into :anzahl
c+ from grresp
c+ where rsjah = :jahr
c+ and rsqua = :qa

Übrigens:
Das "USING" beim Open wird ignoriert, da du beim Declare keine Parameter sonder Hostvariablen deklariert hast.
Das Using kannst du dir dann schenken.

Using ist dann erforderlich, wenn man sog. Parametermarker verwendet:

"select ... where rsjah = ? and rsqua = ?".
Diesen dann preparen und dann mit "open ... using ..." öffnen.