У меня есть глобальный индекс (XWES.ETI), который я хочу использовать для извлечения индексов для другой таблицы. Глобальный XWES.ETI имеет один нижний индекс (порядковый номер) и две части данных, которые я хочу использовать в качестве нижних индексов для фактического глобального, определенного в карте хранилища кэша sql (^ ZIDETRP). Мой класс компилируется без ошибок, но не загружается и получает ошибку в %AcquireLock, потому что одна из моих созданных переменных (edt) не определена. Я знаю, что этот код близок, но я просто не могу определить проблему. Предложения кто-нибудь? Класс выглядит следующим образом:
Class System.ErrTest Extends (%Persistent, %XML.Adaptor) [ StorageStrategy = Legacy ]
{
Property ErrID As %Library.Integer;
Property ErrDt As %Library.Date;
Property ErrNum As %Library.Integer;
Property EDat As %Library.String;
/// Index iMaster on ErrID [IDKey,Unique];
Index iMaster On ErrID [ IdKey, Unique ];
<Storage name="Legacy">
<ExtentSize>100000</ExtentSize>
<IdLocation>^XWES.ETI</IdLocation>
<SequenceNumber>6</SequenceNumber>
<SQLMap name="Map1">
<Data name="EDat">
<Delimiter>$c(0)</Delimiter>
<Node>1</Node>
<Piece>1</Piece>
</Data>
<Data name="ErrDt">
<RetrievalCode> Set {*}=edt</RetrievalCode>
</Data>
<Data name="ErrNum">
<RetrievalCode> Set {*}=enum</RetrievalCode>
</Data>
<Global>^ZIDETRAP</Global>
<RowReference>^ZIDETRAP(edt,enum)</RowReference>
<Subscript name="1">
<AccessType>Other</AccessType>
<Accessvar name="1">
<Code> S edt=$p(^XWES.ETI({L1}),"^",1)</Code>
<Variable>edt</Variable>
</Accessvar>
<Accessvar name="2">
<Code> S enum=$p(^XWES.ETI({L1}),"^",2)</Code>
<Variable>enum</Variable>
</Accessvar>
<Expression>{ErrID}</Expression>
<NextCode> s {L1}=$Order(^XWES.ETI({L1}))</NextCode>
</Subscript>
<Type>data</Type>
</SQLMap>
<StreamLocation>^WSandlin.System.ErrTestS</StreamLocation>
<Type>%CacheSQLStorage</Type>
</Storage>
}