Здравствуйте, кт, Вы писали:
кт>Вопрос: есть ли еще компиляторы (с любых языков) с таким подходом к реализации динамических границ массивов? Нужно для статьи.
кт>Вот как здесь
Зачем это в язык запихивать? Просто написать, как в Сях или Паскале, нельзя?
Да еще код такой, что попробуй разберись.
Вот эти объявления попробуй прочитай. Хотя бы не сокращали. Стоило писать DECLARE вместо DCL,
DCL (P1,P2,P3) PTR; // УКАЗАТЕЛИ НА МАТРИЦЫ
DCL A1(5,4) FLOAT BASED(P1), // СТАТИЧЕСКАЯ МАТРИЦА А1
B1(4,3) FLOAT BASED(P2), // СТАТИЧЕСКАЯ МАТРИЦА B1
C1(5,3) FLOAT BASED(P3); // СТАТИЧЕСКАЯ МАТРИЦА C1
DCL (M1,N1,Q1) FIXED(31); // ЗАДАВАЕМЫЕ ГРАНИЦЫ
DCL (I,J) FIXED(31); // РАБОЧИЕ ПЕРЕМЕННЫЕ
Думаю также, мало кто знает, что такое BASED. Сишные указатели легче освоить.
Псевдопеременных, кроме PL/1, больше нет нигде. Знаки вопроса в начале каждой строки я вижу впервые.
?INDEX(1,2)=M; ?INDEX(2,2)=N;
?RET(ADDR(A)); // ИЗМЕНЯЕМ КОМАНДЫ ДЛЯ A
?INDEX(1,2)=N; ?INDEX(2,2)=Q;
Из текста я не понял, эти массивы в PL/1 подобны векторам или память под них выделяется один раз? Если один, то такие массивы [allocatable] есть в фортране 90. Хотя тут что-то другое. размеры передаются в процедуру извне, то есть заранее известны.
Как все же здорово, что старшие коллеги предпочли Фортран!