Ошибки описания данных

1. Все ли переменные описаны явно? Отсутствие явного описания не обязательно является ошибкой, но служит общим источником беспокойства. Так, если в подпрограмме на Фортране используется элемент массива и отсутствует его описание (например, в операторе DIMENSION), то обращение к массиву (например, Х = А(1)), будет интерпретироваться как вызов функции. Последнее приведет к тому, что машина будет пытаться обработать массив как программу. Если отсутствует явное описание переменной во внутренней процедуре или блоке, следует ли понимать это так, что описание данной переменной совпадает с описанием во внешнем блоке?

2. Если не все атрибуты переменной явно присутствуют в описании, то понятно ли их отсутствие? Например, отсутствие атрибутов, считающееся общепринятым в PL/1, часто является источником неожиданных осложнений.

3. Если начальные значения присваиваются переменным в операторах описания, то правильно ли инициализируются эти значения? Во многих языках программирования присвоение начальных значений массивам и строкам представляется довольно сложным и, следовательно, является возможным источником ошибок.

4. Правильно ли для каждой переменной определены длина, тип и класс памяти (например, STATIC, AUTOMATIC, BASED или CONTROLLED в PL/1; AUTO, CONST, VOLATILE, REGISTER, STATIC в Си и т.д.)?

5. Согласуется ли инициализация переменной с ее типом памяти? Например, если в подпрограмме на Фортране необходимо устанавливать начальные значения переменной каждый раз при вызове подпрограммы, переменная должна быть инициализирована в операторе описания, отличном от оператора DATA. Если в PL/1 описывается инициализация величины и начальное значение необходимо устанавливать каждый раз при вызове процедуры, то для этой переменной должен быть определен класс памяти АUTОМАТIС, а не STATIC.

6. Есть ли переменные со сходными именами (например, VOLT и VOLTS)? Наличие сходных имен не обязательно является ошибкой, но служит признаком того, что имена могут быть перепутаны где-ни­будь внутри программы.