Структура программы

Программа на Норме состоит из одного или нескольких разделов. Разделы могут быть трех видов - главный раздел, простой раздел и раздел-функция, вид раздела определяется ключевыми словами MAIN PART, PART, FUNCTION, соответственно.

Разделы могут вызывать друг друга по имени и передавать данные при помощи механизма формальных и фактических параметров, либо через внешние файлы при помощи описаний INPUT и OUTPUT.

Для каждого раздела справедливо правило локализации: имена, описанные в разделе, локализованы в этом разделе. Понятие глобальных переменных в языке отсутствует.

Главный раздел обязательно должен присутствовать в программе на Норме и быть единственным; формальных параметров он не имеет. Вызовы главного раздела, а также рекурсивные вызовы разделов запрещены.

В заголовке раздела указывается имя раздела, текст-комментарий (если необходимо) и список формальных параметров. Формальные параметры должны быть описаны в теле раздела при помощи описания величины на области, описания скалярной величины, описания параметров области или описания внешних.

Параметры-величины, указанные до ключевого слова RESULT в списке формальных параметров, являются исходными данными для вычислений, описываемых в разделе; параметры, перечисленные после - являются результатами вычислений. Один и тот же параметр не может быть одновременно исходным и результатом: это приводит к переприсваиванию значений переменным (повторному присваиванию), что запрещено в языке Норма.

В разделе-функции ключевое слово RESULT не используется: результат вычисления функции связывается с именем и типом функции.

В теле раздела могут быть заданы описания, операторы и итерации (порядок их расположения, вообще говоря, произвольный - возможные ограничения определяются при описании входного языка транслятора).

Исходная программа представляется в исходном файле по следующим правилам:

Текст каждого из разделов Норма-программы записывается в бесформатном представлении.

При переносе описания или оператора на следующую строку запрещается разрывать ключевые слова, идентификаторы, константы, в остальном правила переноса произвольные - специальный знак переноса отсутствует.

Ключевые слова, идентификаторы, константы отделяются пробелами, специальными символами, символом конца строки.

Пробелы являются незначащими символами: группа пробелов трактуется как один пробел.