понедельник, 18 марта 2019 г.

MiniM. Формат файлов экспорта рутин

Далее описаны формат файлов для экспорта-импорта рутин, применяемые в MiniM Database Server.

Для экспорта и импорта рутин применяется стандартизованный формат и стандартные соглашения о формировании файла. При этом стандарт допускает несущественные для переносимости уточнения вносимые производителями М систем. Основная спецификация формата определена стандартом ANSI X11.1–1995 и ныне действующим ISO 11756–1999.

Файл экспорта рутин является текстовым. Строка до символа переноса строки или до конца файла (если не встречен символ переноса строки) рассматривается как строка, одна элементарная составляющая экспорта. Символом переноса сроки является символ $c(10), все предшествующие ему символы $c(13) включаются в перенос строки и игнорируются.

Первые две строки файла отводятся на заголовок файла экспорта. Содержание этих строк по своему назначению - это комментарий, общая информация об экспорте. В эти строки можно вписывать произвольную информацию. В MiniM Database Server применяется два варианта трактовки этих строк:
ANSI и MSM
В первой строке заголовка пишется время и дата экспорта.
Во второй строке пишется строка комментария.
Cache
В первой строке пишется строка комментария.
Во второй строке пишется время и дата экспорта.
Также может использоваться произвольная трактовка этих первых двух строк заголовка на усмотрение программы, формирующей файл экспорта рутин.

Далее после строк заголовка следуют блоки экспорта рутин, и после последней из них добавляется пустая строка как индикатор окончания файла.

Блок экспорта рутины состоит из:
  • строка с именем рутины
  • строки подряд с строками рутины
  • пустая строка как индикатор окончания текста рутины
Таким образом, в конце файла экспорта должно находиться две пустые строки - одна как индикатор окончания последней из рутин и вторая как индикатор окончания экспорта.

С технической точки зрения, строка в рутине может быть пустой на усмотрение производителя М системы. При этом при экспорте такой пустой строки нужно заменить эту пустую строку если она относится к тексту рутины, на пробельную, например из одного пробела или табулятора.

Пример. Пусть есть рутина с содержанием:
RouName ; comment here
 q
label(param)
 w param
 q

Тогда при экспорте в формате ANSI получаем:

2:30 0  12-июн-2010~Format=ANSI.S~ | строка заголовка с датой 
                                   | пустой комментарий
RouName                            | имя рутины 
RouName ; comment here             | 1 строка
 q                                 | 2 строка
label(param)                       | 3 строка
 w param                           | 4 строка
 q                                 | 5 строка
                                   | пустая строка окончания рутины
                                   | пустая строка окончания экспорта
[EOF]
Если бы в файл экспортировалось несколько рутин, то после пустой строки индикатора окончания рутины также должна быть строка с именем следующей рутины, далее текст рутины и так далее.

Формат автоимпорта рутин.

Автоимпортом называется соглашение о формировании заголовка таким образом, чтобы файл можно было импортировать командами записанными в заголовке, не прибегая к специальным средствам импорта. Если при экспорте указывается что необходимо использовать в заголовке автоимпорт, то в первую строку вписываются команды языка MUMPS таким образом что файл может быть передан на вход процессу minim.exe.
minim.exe < rouname.rou
Процесс начнет считывание и выполнение первой строки и это будет началом импорта. Для автоимпорта могут быть использованы как одна так и обе строки заголовка, на усмотрение экспортирующей программы.

Например, MiniM Routine Editor при формировании экспорта с автоимпортом формирует файл:
n h,r,l r h f  r r q:r=""  s h=$p(r,"^",4) >>>
  s h=$s(h:h,1:$h) s r=$p(r,"^")           >>> 
  f  r l i l="" q:l=""                     >>>
  s ^ROUTINE(r,$i(^ROUTINE(r)))=l          >>>
  s ^ROUTINE(r,0)=h
2:38 0  12-июн-2010 MiniM Routine Editor export
RouName
RouName ; comment here
 q
label(param)
 w param
 q


[EOF]
Здесь символами >>> обозначено продолжение строки.

Общее соглашение экспорта при использовании автоимпорта включает соглашение о том, что этот файл должен быть в виде, допускающем его импорт штатными средствами, это означает что нельзя использовать для команд импорта более чем две первые строки или при необходимости использовать место после последних двух пустых строк.

Для экспорта рутин могут быть использованы файлы с произвольными расширениями, наиболее часто используемые:
  • ROU
  • RTN
  • RSA
  • M

Комментариев нет:

Отправить комментарий