Wiele instalacji DB2 Universal Database for OS/390 zawiera implementację sposobu monitorowania zasobów, która umożliwia administratorom systemu powiązanie użycia zasobów systemu z dostępem do nich przez konkretnych użytkowników. Procedura ta może być użyta w celu naliczenia należności za korzystanie z zasobów dla użytkowników lub zatrudniających ich wydziałów. Praktyka taka jest powszechnie nazywana charge-back accounting (rozliczenia według wykorzystania zasobów).
Produkty DB2 Connect umożliwiają administratorom systemu monitorowanie zasobów komputera typu mainframe, wykorzystywanych przez użytkowników baz danych za pośrednictwem DB2 Connect. W celu przesyłania danych rozliczeniowych z DB2 Connect do DB2 dla serwera baz danych można używać łańcuchów rozliczeniowych. Łańcuch rozliczeniowy łączy dane utworzone przez system z danymi dostarczonymi przez użytkownika. Dane te umożliwiają administratorowi połączenie użycia zasobów z wykorzystaniem ich przez konkretnego użytkownika i zgodnie z tymi danymi naliczenie odpowiednich opłat.
Łańcuch rozliczeniowy jest wysyłany przy użyciu parametru DRDA o nazwie PRDDTA. Ponieważ w DRDA dostęp do zawartości tego parametru nie jest obsługiwany, nie ma żadnej gwarancji, że serwer aplikacji rozpozna te dane jako dane związane z rozliczeniem. Obecnie PRDDTA jest obsługiwane tylko w systemach MVS i OS/390. Łańcuch jest przechowywany jako zapis rozliczeniowy.
Łańcuch rozliczeniowy składa się z 56 bajtów utworzonych przez DB2 Connect (przedrostek), 199 bajtów podanych przez użytkownika (przyrostek); razem maksymalnie 255 bajtów.
Tabela 3 zawiera pola utworzone przez system. Każde z tych pól
jest uzupełnione z prawej strony znakami odstępu.
Tabela 3. Pola łańcucha rozliczeniowego utworzone przez DB2 Connect
Nazwa pola | Długość | Opis |
---|---|---|
acct_str_len | 1 | Wartość szesnastkowa zawierająca długość łańcucha rozliczeniowego minus 1. Na przykład X'3C'. |
client_prdid | 8 | Identyfikator produktu oprogramowania klienta. Na przykład identyfikatorem produktu dla produktu DB2 Universal Database wersja 7 jest SQL07010. |
platforma_klienta | 18 | Platforma, na której działa klient, na przykład AIX, OS/2, DOS lub Windows. |
client_appl_name | 20 | Pierwszych 20 znaków nazwy aplikacji użytkownika, na przykład payroll. |
client_authid | 8 | Authid aplikacji użytkownika, na przykład SMITH. |
suffix_len | 1 | Wartość szesnastkowa reprezentująca długość przyrostka dostarczonego przez użytkownika. Wartość X'00' oznacza brak tego przyrostka. |
Przyrostek zdefiniowany przez użytkownika może przyjąć jedną z następujących wartości:
Jeśli przyrostek ma więcej niż 199 znaków, jest obcinany. Aby łańcuch rozliczeniowy został poprawnie przekształcony podczas transmisji do serwera baz danych hosta lub AS/400, należy użyć wyłącznie znaków od A do Z, od 0 do 9 i znaku podkreślenia (_).
Zaleca się użycie metody API ustawiania łańcucha rozliczeniowego. Aplikacja użytkownika powinna wywołać funkcję API przed połączeniem z bazą danych. Aby zmienić łańcuch rozliczeniowy wewnątrz aplikacji (na przykład aby przesłać inny łańcuch podczas połączenia z inną bazą danych), należy wywołać ponownie funkcję API. W przeciwnym wypadku dotychczasowa wartość nie zmieni się aż do zakończenia aplikacji.
Jeśli funkcja API sqlesact() nie jest wywoływana przed pierwszym żądaniem połączenia z bazą danych, zostaje odczytana zmienna środowiskowa DB2ACCOUNT. Wartość ta nie zmieni się do zakończenia aplikacji lub procesu Procesora wiersza komend w tle. Aby podać nowy przyrostek łańcucha rozliczeniowego po pierwszym połączeniu się z bazą danych, należy użyć funkcji API sqlesact() albo zakończyć proces aplikacji lub Procesora wiersza komend (CLP) w tle i uruchomić go ponownie ze zmienną DB2ACCOUNT ustawioną na nową wartość.
Jeśli brak wartości zmiennej DB2ACCOUNT, zostanie użyta wartość parametru konfiguracyjnego systemu DFT_ACCOUNT_STR. Ta wartość domyślna jest użyteczna w przypadku klientów baz danych, którzy nie mają możliwości przekazywania łańcuchów rozliczeniowych do DB2 Connect. Jeśli wartość ta nie istnieje, zostanie użyty łańcuch pusty.
Oto przykłady łańcuchów rozliczeniowych:
x'3C'SQL07010OS/2 cheque SMITH x'05'DEPT1 x'37'SQL07010OS/2 cheque SMITH x'00'
W pierwszym przykładzie przyrostek zdefiniowany przez użytkownika ma postać DEPT1. W drugim przykładzie jest łańcuchem pustym.