Oblicza współczynnik beta dla dwóch wskazanych spółek giełdowych, używając CICS-a. Aplikacja webowa udostepnia REST API oraz korzystający z niego interfejs webowy. Obliczenia są przeprowadzone w COBOL-u.
Program został przedstawiony podczas spotkania kończącego zajęcia Języki i Narzędzia Programowania 3 - Wstęp do programowania w z/OS (link do prezentacji naszego zespołu)
/src/Cobolzawiera plik źródłowy z programem BETA-CICS/src/Javazawiera implementację back-endu dla REST API oraz interfejsu/src/HTMLzawiera pliki HTML używane w interfejsie webowym./src/Pythonzawiera program generujący dane testowe/inputzawiera przykładowe pliki wejściowe:BECIIN01,BECIIN02to pliki testowe, zaśBECICDPiBECIWIGto zwroty odpowiednio dla CDP i WIG/imgszawiera obrazki pomocnicze
Przy symulacji danych założyliśmy, że średnia zwrotów wynosi zero. Program zwraca kolejne rekordy obu plików, prawdziwą betę oraz obliczoną betę.
Zakładamy, że dane wejściowe dla aplikacji składają się z policzonych już zwrotów dla danych inwestycji i są przechowywane w zbiorach VSAM z formatem rekordu:
01 WS-X-LINE.
05 WS-X-KEY PIC 9(5) COMP.
05 FILLER PIC X(4) VALUE SPACES.
05 WS-X-VAL PIC X(12).
05 FILLER PIC X(160) VALUE SPACES.
gdzie WS-X-KEY jest indeksem dnia, a WS-X-VAL wartością zwrotu w danym dniu, zapisaną w formacie S9(3)V9(12), np:
00001 +000.000964
00002 -000.011885
00003 +000.014356
00004 +000.000177
00005 +000.006058
...
Dane wejściowe powinny być wprowadzone do tej samej grupy CICS-owej, w której znajduje się nasz program.
Aplikacja przyjmuje jako parametry zakres dni, z którego pobierane są wartości do obliczeń, oraz nazwy dwóch plików, z których będą odczytywane rekordy. Parametry te są pobierane poprzez mechanizm kontenerów CICS-owych.
Następnie obliczany jest współczynnik beta, a wynik również jest przekazywany przez kontener. W przypadku wystąpienia obsługiwanego błędu, program wysyła kod błędu do użytkownika. Wystąpienie nieobsługiwanego błędu kończy się ABEND-em.
Dostęp do API odbywa się poprzez metodę GET w następującym formacie:
/rest/beta/{inputA}/{inputB}/{beginText}/{endText}
gdzie kolejne parametry to:
inputA- nazwa pliku względem którego obliczana jest wariancja w mianowniku współczynnika betainputB- nazwa drugiego plikubeginText- liczba, oznacza pierwszy dzień zakresu używanego do obliczeńendText- liczba, oznacza ostatni dzień zakresu używanego do obliczeń
Odpowiedź jest w formacie JSON:
time- czas wysłania odpowiedzistatus- w przypadku wystąpienia obsługiwanego błędu wynosiERROR, w przypadku poprawnego wykonania zwracaRESULTresult- w przypadku wystąpienia obsługiwanego błędu przyjmuje jego nazwę, w przypadku poprawnego wykonania zwraca współczynnik beta w formacie Cobolowym:S9(3)V9(12). Np. tekst+001234560000000oznacza liczbę1.23.
Interfejs webowy znajduje się w endpoincie: /rest/front. Pozwala na wybranie dwóch plików (załączone są dwa testowe pliki oraz pliki zawierające obliczone zwroty CDP oraz WIG dla tego samego zakresu dni) oraz pierwszego i ostatniego dnia, na podstawie którego obliczany jest współczynnik.
Wojciech Kłopotek, Wojciech Olejniczak
