Hallo Birgitta,

ich habe auf folgende Weise das SQL-Statement aufgebaut :

D #SQLCMD S 1024A

D CSQL 'SELECT COUNT(*) FROM SWDAT-
D /MDBF00 WHERE BFFIRM = ''000'''

D ASQLCMD S 1 DIM(1024)

MOVEA CSQL ASQLCMD(1)

IF I1PROG <> *BLANKS
EVAL #SQL2 = ' AND BFPROG = I1PROG'
MOVEA #SQL2 ASQLCMD(56)
ENDIF

IF I1SAB <> '*'
EVAL #SQL2 = 'AND BFSAB = I1SAB'
MOVEA #SQL2 ASQLCMD(75)
ENDIF

MOVEA ASQLCMD #SQLCMD

C/EXEC SQL
C+ PREPARE SQLBP FROM :#SQLCMD
C/END-EXEC

Im Debugger sieht das Statement vor dem Prepare folgendermaßen aus :

....5...10...15...20...25...30...35...40...45...50 ...55...60
'SELECT COUNT(*) FROM SWDAT/MDBF00 WHERE BFFIRM = '000' '
'AND BFPROG = I1PROG'

Zuerst habe ich das Statement über den CAT-Befehl zusammengebaut, als dabei Fehlermeldungen kamen, habe ich eine Datenstruktur erstellt und diese wie oben beschrieben gefüllt. Beide Wege funktionieren, wenn ich nur maximal 60 Stellen fülle, bei mehr als 60 Stellen ergeben beide Wege die beschriebene Fehlermeldung.

Ich habe die Variablen auch schon auf 100 gekürzt um zu testen, ob es dann fehelrfrei läuft, aber auch das bringt die gleiche Fehlermeldung.

Was habe ich falsch gemacht ? Was habe ich noch für Möglichkeiten ?