Før vi kaster os ud i, hvordan du bruger CAF i stedet for DSN, så er det på plads med en advarsel. Hvis man bruger CAF i steet for DSN, så skal man håndtere problematikker såsom valg af DB2-subsystem og valg af DB2-plan inde i programmet i stedet for som med DSN før og under opstart af programmet. Med CAF bliver dit program altså afhængigt af navngivne ressourcer. Det kan man selvfølgelig kode sig ud af, men så skal man først tage stilling til, hvordan det skal gøres med de heraf følgende problemer mht. standarder osv.
Nu til et eksempel skrevet i PL/1:
caf_ssid = parm;
caf_plan = 'CAFEKS';
caf_retcode = 0;
caf_reascode = 0;
caf_function = 'OPEN';
CALL dsnali( caf_function
, caf_ssid, caf_plan
, caf_retcode, caf_reascode
);
IF caf_retcode = 0
THEN DO;
/* Skriv resten af programmet her, som */
/* om det foregik under DSN-kommandoen */
caf_termop = 'SYNC';
caf_function = 'CLOSE';
CALL dsnali(caf_function, caf_termop);
END;
ELSE;
SELECT(hex(caf_reascode));
WHEN('00F30034')
/* Plan ikke tilgængelig/findes ikke */
;
WHEN('00F30006')
/* Subsystem ikke tilgængeligt/findes ikke */
;
OTHERWISE
/* Anden fejl under OPEN */
;
END;
END cafeks;
I stedet for kommentarerne indsætter du selv den kode, der passer på din installation. Vi har ikke vist funktionen HEX, som du selv skal kode eller gøre noget andet for at kunne teste på de angivne reasoncodes. Vi har udeladt CAF_RETCODE og CAF_REASCODE på CLOSE-kaldet, da det jo ikke får den store betydning for resten af programafviklingen i dette program om kaldet lykkes eller ej. Programmet terminerer under alle omstændigheder lige efter.
Når du linker et program, der benytter CAF, skal du huske at lave en INCLUDE af DSNALI i stedet for DSNELI, ellers forventer dine SQL-kald, at du kører under DSN-kommandoen. Når programmet i eksemplet er blevet til et LOAD-modul kan du fra JCL starte det med //CAFEKS EXEC PGM=CAFEKS,PARM='/DB2', hvis dit DB2-subsystem hedder DB2.
En af de ting, vi overvejer at bruge CAF-interfacet til, er at accesse flere forskellige DB2-subsystemer under samme programafvikling. Man kan selvfølgelig også bruge CAF til at skifte DB2-plan undervejs. Når man først går i gang med disse ting, skal du nok først læse alt om CAF-interfacet i DB2 version 5 manualen Application Programming and SQL guide kapitel 6.6. Rigtig god fornøjelse.