The routine CVT2STD developed a bug; THe variable 'Months' didn't include May. Also, a 'Normal' date format (DD Mon YR) will assume a two digit YR is before 0100 and a three digit YR is before 1000. The complete routine is: CVT2STD: /* version 1.2; mbr CVT2STD in QREXSRC */ arg string, option; option = Translate(LEFT(option,1)); string = STRIP(string) Months = 'Jan Feb Mar Apr May Jun Jul Aug ', 'Sep Oct Nov Dec' Months = Translate(Months); Select When pos(option, ' D M W' ) = 0 then return 'Derr_Opt'; When option = 'B' then YMD = (rd2std(string)); When option = 'E' then YMD =, translate(YEARMODX,string,'DX/MO/YEAR'); When option = 'N' then do parse value string with DD Mon YR; Mon = translate(Mon); YR = Right(YR,4,'0'); YMD = YR || Right(WordPos(Mon, Months),2,'0') ||, Right(DD,2,'0'); end; When option = 'O' then YMD = translate(YEARMODX,string,'YEAR/MO/DX'); When option = 'S' then YMD = string; /* might as well */ When option = 'U' then YMD = translate(YEARMODX,string,'MO/DX/YEAR'); Otherwise Return 'DERROPTERR'; END; Select When Edit_Date(YMD) then return YMD; Otherwise Return 'DERR010' END; EXIT;