Цитата(Ignat @ 17.4.2006, 10:42 ) | IF (F(x)) PROC1, PROC2, PROC3
Т.е. не переход, а вызов процедуры... Как это в нынешнем стандарте выглядит не представляю. Надо попробовать. |
Да, выглядит практично. В последнем стандарте такой формы if нет ни в каком проявлении.
Цитата(regis @ 17.4.2006, 11:46 ) | Так если это очень нужно, это легко реализовать самому (напишите процедуру, которая первым аргументом принимает выражение, а еще тремя -- ссылки на вызываемые функции). |
Будет много лишнего времени тратиться на вызов функций.
Цитата(Ignat @ 17.4.2006, 11:51 ) | Вот только посмотрев машинный код, мы увидим лишний переход. В принципе это должно решаться inline-функциями, но есть ли они в современном фортране? В 77 не было, как я помню. |
inline-функции -- прерогатива компилятора. Устанавливается это дело директивами или опциями компиляции. Например, в Intel есть т.н. High Level Optimization, который смотрит в том числе, где бы эффективно заinlineить.
Цитата(XPEHOMETP @ 17.4.2006, 14:00 ) | Не знаю, мне казалось, довольно удобная штука. |
Удобно? -- нужно же было считать число символов в строке, а если строку потом менять, то повторное использование совсем будет неэффективным. Я за их отмену. |