17. UŽIVATELSKÉ PODPROGRAMY Autoři překladače jazyka MX COBOL vytvořili několik podprogramů (psaných v jazyku C), pomocí nichž lze provádět určité akce nerealizovatelné nebo obtížně realizovatelné pomocí cobolských příkazů. Jména všech těchto podprogramů začínají velkými písmeny IC. Na rozdíl od tzv. podpůrných podprogramů se jmény začínajícími písmeny icb musí být uživatelské podprogramy vyvolávány explicitně uživatelem pomocí příkazů CALL a to přesně dle předepsaných formátů (správnost volání je při překladu kontrolována jen částečně a odchylka může vést k nepředvídatelným následkům). Překladač většinou jména uživatelských podprogramů rozpoznává a příslušné příkazy CALL překládá nestandardním způsobem (provádí kontroly, předává hodnotu argumentu místo adresy, délky předává odlišným způsobem nebo je nepředává vůbec, některé podprogramy vrací hodnotu atd.). U některých uživatelských podprogramů nevzniká překladem příkazu CALL vůbec volání stejnojmenné funkce jazyka C jako u obyčejného příkazu CALL, nýbrž volání některé systémové funkce nebo pouze jeden nebo několik příkazů jazyka C (jedná se o ICUGETV, ICUFREE, všechny elementární funkce, ICMVC, ICSORT, ICSORTM, ICSORTP, ICIDENT a ICVOLNY - podprogramy s těmito jmény tedy neexistují a nejsou dodávány); kvůli stručnosti budeme však i v těchto případech používat termín "podprogram". Obecně je tedy volání uživatelského podprogramu vlastně novým samostatným příkazem jazyka MX COBOL.