function GetShortPathName retrieves the 8.3 pathname for an existing long pathname.
PROCEDURE GetShortPathNameA EXTERNAL "kernel32.dll" : DEFINE INPUT PARAMETER lpszLongPath AS CHARACTER. DEFINE OUTPUT PARAMETER lpszShortPath AS CHARACTER. DEFINE INPUT PARAMETER cchBuffer AS LONG. DEFINE RETURN PARAMETER ReturnValue AS LONG. END PROCEDURE. DEFINE VARIABLE longname AS CHARACTER NO-UNDO. DEFINE VARIABLE shortname AS CHARACTER NO-UNDO. DEFINE VARIABLE returnvalue AS INTEGER NO-UNDO. &GLOB shortsize 68 longname = "C:\Program Files\VendorName\Some Application\Data\Monthly Revenue.txt". shortname = FILL("-", {&shortsize}). RUN GetShortPathNameA (longname, OUTPUT shortname, LENGTH(shortname), OUTPUT ReturnValue). IF ReturnValue > {&shortsize} THEN MESSAGE "buffer too short, specify at least " ReturnValue. ELSE IF ReturnValue = 0 THEN MESSAGE "file does not exist". ELSE shortname = ENTRY(1, shortname, CHR(0)).