Blödes Konzept aber:

Auf Views kannman keinen Index erstellen, aber man kann einen berechneten Index incl. Where auf die PF erstellen.

Dies nützt aber nur etwas, wenn die Whereklausel genaue diese Bedingung des Index auch verwendet.
Also der Index wird mit "...dec(...) " erstellt, dann muss die Whereklausel auch "... where dec(...) .." enthalten.

Dein Hauptproblem ist allerdings die Konvertierung des Keys, wenn die Struktur für alle Konvertierungen nicht identisch ist.
Seit V6R1 hat sich die SQL-Logik leider etwas geändert:

select dec(f1, 5, 0) from myfile where key = 'D1';

Die Umwandlung in dec() wird vor der Prüfung der Whereklausel durchgeführt!
K.a. warum das so ist. D.h., wenn die Konvertierung fehlschlägt wird die Whereklausel nicht mehr ausgeführt. Du musst also in deine Umwandlung eine zusätzliche Prüfung auf den Inhalt einbauen.
Performant wird das dann nicht mehr.

M.a.W.: Dein Konzept funktioniert nur dann, wenn die Struktur der variablen Schlüssel identisch ist.
Da das wohl nicht gewährleistet ist, hast du da schlechte Karten.

Alternativ kannst du Service-Programme bauen, die die Zugriffe entsprechend gestalten. Die Programme dürfen dann nur über die Services zugreifen.