Вы должны применить ФОРМАТ, чтобы получить начальные нули (конкатенация обрезает конечные пробелы):
t1.COD_CZ||Cast(t1.CODTC AS FORMAT '9(4)')||Cast(t1.PROGOPE AS FORMAT '9(8)')
Результат имеет фиксированную длину, но все равно VarChar (17). Если вам нужна фиксированная длина, например, для экспорта:
CAST(t1.COD_CZ||Cast(t1.CODTC AS FORMAT '9(4)')||Cast(t1.PROGOPE AS FORMAT '9(8)') AS CHAR(17))