Статус документа
Статус документа

ГОСТ Р ИСО 13584-101-2010 Системы промышленной автоматизации и интеграция. Библиотека деталей. Часть 101. Протокол обмена геометрическими представлениями по параметрической программе

     5.1 Имя подпрограммы на языке программирования FORTRAN


Программный блок (модуль) на языке FORTRAN должен быть ПОДПРОГРАММОЙ.

Примечание - Программный блок на языке FORTRAN может не быть ПРОГРАММОЙ или ФУНКЦИЕЙ.


Имя программного блока на языке FORTRAN должно иметь следующую структуру:

'F' + encoded_supplier_code + '_' + <program_name>

Код encoded_supplier_code должен быть кодом поставщика данных библиотеки согласно ИСО 13584-26, к которому применяют функцию кодирования. Функция encode предназначена для замены каждого знака, который не разрешается использовать в именах на языке программирования FORTRAN, соответствующим кодированным знаком, который соответствует знаку "_" последовательности, за которым следует код знака (состоящий из двух знаков), в соответствии с набором знаков ИСО/МЭК 10646-1. Кроме того, если кодируемым знаком является знак "_", то и в результате будет "_".

encoded_supplier_code кодируется с использованием следующей функции кодирования:

*)

FUNCTION encode(s: STRING): STRING;

LOCAL

strtmp: STRING;

lower_cases: LIST OF STRING :=

['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j' ,'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'];

upper_cases: LIST OF STRING :=

['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J' ,'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];

numerals: LIST OF STRING :=

['0','1', '2', '3', '4', '5', '6', '7', '8', '9'];

underscore: STRING :='_';

allowed_characters: LIST OF STRING :=

lower_cases + upper_cases + numerals + underscore;

result: STRING:=";

END_LOCAL;

REPEAT i := 1 TO LENGTH(s);

IF NOT(s[i] IN allowed_characters)

THEN

strtmp := FORMAT(icode(s[i]), '02I');

result := result + '_' + strtmp;

ELSE

IF (s[i] = '_')

THEN

result := result + '_' + s[i];

ELSE

result:= result + s[i];

END_IF;

END_IF;

END_REPEAT;

RETURN (result);

END_FUNCTION;

(*


Примечание 1 - Функция icode возвращает код знаков по ИСО 10646-1, интерпретируемых как целое значение.

Примечание 2 - Функция icode не установлена в языке EXPRESS, поскольку ограничения языка EXPRESS могут привести к тому, что такая функция будет очень длинной.


Пример - Код поставщика 0112/1///13584_101_1 кодируют как 0112_2F1_2F_2F_2F13584_101_1. '2F', и он соответствует коду знака 'f' в наборе знаков по ИСО/МЭК 10646-1.

Поставщик данных библиотеки должен использовать код поставщика, который отображается строкой длины, равной 31 знаку или меньше.

Примечание 3 - Размер строки, получающийся в результате кодирования, может превышать допустимую длину строки для определения имени FORTRAN SUBROUTINE (ограниченную 31 знаком). Поэтому поставщик данных библиотеки должен зарегистрировать новый код поставщика для создания имени FORTRAN SUBROUTINE.