Не получается доверять ИИ пока…
Habr ·
Хотел сделать это как пост, но символов не хватило... Пишу на RPG под IBM i. И вот возникла проблема на вход некоей функции приходит дата в виде строки в формате ISO (YYYY-MM-DD). Ее надо проверить на корректность и перевести в формат CYMD (CYYMMDD где C - век, 0 для 1900Б 1 для 2000 и т.п.) в число zoned(7) (формат с фиксированной точкой, 7 знаков). Да, формат экзотический, но на IBM i используется, поддерживается и достался нам в наследство от разработчиков нашей АБС - компании MySys. Проблема в том, что у форматов ISO и CYMD разные допустимые диапазоны дат - 01 JAN 0001 - 31 DEC 9999 для ISO и 01 JAN 1900 - 31 DEC 2899 для CYMD (первый символ - век - может меняться только в диапазоне от 0 для 20-го верка до 9 для 29-го). Т.е. даже провалидировал входящую строку на предмет того что там содержится корректная ISO дата, нет уверенность что при конвертации в CYMD не случится исключения по причине того, что эта дата выходит за границы диапазона CYMD. Естественно, я знаю как это правильно и эффективно сделать. Но решил проверить ИИшку. Сформулировал задачу, запустил. Получил ответ Читать далее
Хотел сделать это как пост, но символов не хватило... Пишу на RPG под IBM i. И вот возникла проблема на вход некоей функции приходит дата в виде строки в формате ISO (YYYY-MM-DD). Ее надо проверить на корректность и перевести в формат CYMD (CYYMMDD где C - век, 0 для 1900Б 1 для 2000 и т.п.) в число zoned(7) (формат с фиксированной точкой, 7 знаков). Да, формат экзотический, но на IBM i используется, поддерживается и достался нам в наследство от разработчиков нашей АБС - компании MySys. Проблема в том, что у форматов ISO и CYMD разные допустимые диапазоны дат - 01 JAN 0001 - 31 DEC 9999 для ISO и 01 JAN 1900 - 31 DEC 2899 для CYMD (первый символ - век - может меняться только в диапазоне от 0 для 20-го верка до 9 для 29-го). Т.е. даже провалидировал входящую строку на предмет того что там содержится корректная ISO дата, нет уверенность что при конвертации в CYMD не случится исключения по причине того, что эта дата выходит за границы диапазона CYMD. Естественно, я знаю как это правильно и эффективно сделать. Но решил проверить ИИшку. Сформулировал задачу, запустил. Получил ответ Читать далее