Bei embedded SQL können Parameter (:FELD) nicht als Variablen eingesetzt werden, da Parameter bereits durch den Precompiler in Felder aufgelöst werden (Umwandlungsliste).
Wenn du dynamische SQL's zusammenbauen willst, musst du den gesamten Select in einer Variablen zusammenbauen und per "Prepare Statement" vorbereiten.
Anschließend kannst du per Execute das Statement ausführen und den Cursor öffnen.

Versuche doch alternativ die Where-Bedingung besser vorzubereiten:

where ... and (:PROGD0 = ' ' or PROGPW = :PROGD0) ...