MiniM. Saving time.


| About | Download | Tools | Knowledge Base | How to Buy |

MiniM Overview

Getting Started

Download

Documentation

Tools

Cache Tools

GT.M Tools

Knowledge Base

FAQ

Contacts

Copyrights

MiniM Knowledge Base | Sep 24, 2010

Как указать базу данных для рутин и глобалов.

В практических задачах бывает необходимо обратиться к глобалу или рутине размещенной в другой базе данных. Эта статья описывает как это выполняется на языке MUMPS.

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

Прямое указание имени базы данных для глобала:

^|dbname|gloname(subscripts,...)

Прямое указание имени базы данных для рутины:

^|dbname|rouname(arguments,...)

Имя базы данных указывается как вычисляемое выражение. Выражение может быть указано произвольной сложности, может содержать константы, операторы, вызовы функций и косвенности. Пример использования константы для имени базы данных:

s val=^|"TEMP"|gloname(subscripts,...)
d ^|"TEMP"|rouname(arguments,...)

Пример использования выражения с операторами для имени базы данных:

s a="TE",b="MP"
s val=^|a_b|gloname(subscripts,...)
d ^|a_b|rouname(arguments,...)

Пример использования выражения с косвенностью для имени базы данных:

s curdb="TEMP"
s dbname=$na(curdb)
s val=^|@dbname|gloname(subscripts,...)
d ^|@dbname|rouname(arguments,...)

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

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

Также MiniM Database Server поддерживает устаревшую нотацию явного указания базы данных в квадратных скобках, что позволяет переносить ранее разработанные программы:

s val=^[dbname]gloname(subscripts,...)
d ^[dbname]rouname(arguments,...)

В случае необходимости указать метку и опционально смещение, имя базы данных для рутины указывается непосредственно перед именем рутины:

d label+offset^|dbname|rouname

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

Евгений Каратаев
support@minimdb.com


Copyright (C) 2017 Eugene Karataev
Emails: Info Tech Support