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żącej selekcji, ale tylko tych klientów, którzy co najmniej raz kupili produkt Shoe. W tym przypadku funkcja elementowa P() zwraca listę potencjalnych klientów, których wskazuje selekcja 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żącej selekcji, ale tylko tych klientów, którzy co najmniej raz dostarczyli produkt Shoe. W tym przypadku funkcja elementowa P() zwraca listę potencjalnych dostawców, których wskazuje selekcja Shoe w polu Product. Lista dostawców jest następnie stosowana jako selekcja w polu Customer.

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

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