Modyfikatory zestawów z niejawnymi definicjami wartości pól

Poniżej opisano sposób definiowania zestawu wartości pól za pomocą zagnieżdżonej definicji zestawu.

Wymaga to zastosowania funkcji elementowych P() i E(), reprezentujących odpowiednio zestawy możliwych i wykluczonych wartości pola. Wewnątrz nawiasów można podać jedno wyrażenie zestawu i jedno pole, na przykład P({1} Customer). Funkcji tych nie można używać w innych wyrażeniach.

Uwaga: Funkcji elementowych P() i E() można używać tylko w odniesieniu do zestawu naturalnego. Jest to zestaw rekordów, które można zdefiniować za pomocą prostego wyboru. Przykład: zestaw zdefiniowany przez {1-$} nie może zawsze być określony poprzez wybór, nie jest więc zestawem naturalnym. Użycie tych funkcji w odniesieniu do zestawów innych niż naturalne może prowadzić do nieoczekiwanych wyników.

Examples and results:  

Przykłady Wyniki
sum( {$<Customer = P({1<Product={'Shoe'}>} Customer)>} Sales )

Zwraca wartość sprzedaży dla bieżącego wyboru, ale tylko tych klientów, którzy co najmniej raz kupili produkt „Shoe”. W tym przypadku funkcja elementowa P() zwraca listę możliwych klientów, których wskazuje wybór „Shoe” w polu Product.

sum( {$<Customer = P({1<Product={'Shoe'}>})>} Sales )

Tak samo jak powyżej. Jeśli pole w funkcji elementowej zostanie pominięte, funkcja zwróci możliwe wartości pola wskazanego w przypisaniu zewnętrznym.

sum( {$<Customer = P({1<Product={'Shoe'}>} Supplier)>} Sales )

Zwraca wartość sprzedaży dla bieżącego wyboru, ale tylko tych klientów, którzy co najmniej raz dostarczyli produkt „Shoe”. W tym przypadku funkcja elementowa P() zwraca listę możliwych dostawców, których wskazuje wybór „Shoe” w polu Product. Lista dostawców jest następnie stosowana jako wybór w polu Customer.

sum( {$<Customer = E({1<Product={'Shoe'}>})>} Sales )

Zwraca wartość sprzedaży dla bieżącego wyboru, ale tylko tych klientów, którzy nigdy nie kupili produktu „Shoe”. W tym przypadku funkcja elementowa E() zwraca listę klientów wykluczonych wyborem produktu „Shoe” w polu Product.