Как известно, Enterprise PL/I содержит ббольшое количество весьма полезных втроенных функций. Однако, не всегда имеется возможность использовать именно этот компилятор. А необходимость получить такую же функционльность имеется.
Вот так и с BUILTIN функцией TRIM - она весьма полезна для решения большого количества задач.
Давайте напишем небольшую процедуру, которая сможет собой заменить встроенный TRIM из комплекта Enterprise PL/I.
Сложность написания данной функции крайне низка, но готовый код так или иначе сможет уменьшить суммарное время на разработку программы.
/*********************************************************************/ /* TRIM LEADING AND TRAILING BLANKS */ /*********************************************************************/ TRIM: PROC(INSTR) RETURNS(CHAR(35)); DCL INSTR CHAR(35); DCL (M,START_IND) BIN FIXED(31); START_IND = 0; DO M = 1 TO 35 WHILE(START_IND = 0); IF CHAR_IN_STRING(SUBSTR(INSTR,M,1),ALPHABETIC||NUMERIC,62) THEN START_IND = M; END; IF START_IND ¬= 0 THEN DO M=35 TO START_IND BY -1; IF CHAR_IN_STRING(SUBSTR(INSTR,M,1),ALPHABETIC||NUMERIC,62) THEN RETURN(SUBSTR(INSTR,START_IND,M-START_IND+1)); END; RETURN(''); END TRIM;
В примере я поставил ограничесние в 35 символов на входную строку. Никто не мешает сделать его любым другим. Или же использовать CHAR(*)
Отправить комментарий