Hello
With PL/I you can do about anything, even system-related programms (you can call directly most of the systemroutines/APIs).
We have guidelines for our programmers, we can check them direct in the PL/I compiler with the RULES and DEPRECATE/DEPRECATENEXT options.
Best performance we get with the ARCH level, we set it to the weakest hardware (fallback-machine) but COBOL V5 can do this now too.
PL/I has alot of BIF (BuiltIn Functions) for anything you need (for example BASE64,UNICODE coversions).
We let PL/I check the boudaries of the variables/arrays even in production (PREFIX(SIZE,STRINGRANGE,SUBSCRIPTRANGE)) what is very useful to detect programming errors at runtime (without, you just may have wrong data processed that you may find out very later).
The compiler gives alot of informations in the listing, where you may have an error, for example (IBM2615I DO-loop will always execute exactly once. A semicolon after the DO may be missing.). COBOL does not do that in these details.
If you are interested in PL/I and COBOL, come the the GSE ADL-Guide (Germany): http://gsenet.cms1.ch/Arbeitsgruppen/AADLD/tabid/1200/Default.aspx
We meet us every half a year and have direct contacts to the COBOL, PL/I and other IBM Labors.
We have both languages in our company but i do only PL/I (and Assembler), so i don't know all the details of COBOL.
Patrick Vogt
Chairman AADLD