GetShortPathName

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)).