Bufor programu a roll area

Podobne dokumenty
Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

Wprowadzania liczb. Aby uniknąć wprowadzania ułamka jako daty, należy poprzedzać ułamki cyfrą 0 (zero); np.: wpisać 0 1/2

Tabela wewnętrzna - definicja

Właściwości i metody obiektu Comment Właściwości

Tablice (jedno i wielowymiarowe), łańcuchy znaków

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p.

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Język C++ zajęcia nr 2

Autor: dr inż. Katarzyna Rudnik

Zmienne, stałe i operatory

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane

Pracownia Komputerowa wykład VI

INFORMATYKA Studia Niestacjonarne Elektrotechnika

Programowanie w języku Python. Grażyna Koba

C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów

29. Poprawność składniowa i strukturalna dokumentu XML

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p.

1 Podstawy c++ w pigułce.

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy WSKAŹNIKI KLASOWE

1 Podstawy c++ w pigułce.

Algorytmika i Programowanie VBA 1 - podstawy

Mikrokontroler ATmega32. Język symboliczny

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Załącznik nr 2 do Umowy Nr. o korzystanie z usługi Identyfikacji Przychodzących Płatności Masowych z dnia.

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Systemy operacyjne. Laboratorium 9. Perl wyrażenia regularne. Jarosław Rudy Politechnika Wrocławska 28 lutego 2017

Funkcje. Rozdział 3a Funkcje wierszowe. Funkcje znakowe (1) Funkcje wierszowe

Języki programowania zasady ich tworzenia

Struktury, unie, formatowanie, wskaźniki

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

Edytor tekstu MS Word 2010 PL. Edytor tekstu MS Word 2010 PL umożliwia wykonywanie działań matematycznych.

Język SQL. Rozdział 3. Funkcje wierszowe

Krzysztof Kadowski. PL-E3579, PL-EA0312,

Wykład 2 Składnia języka C# (cz. 1)

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

Struktura pliku wejściowego ipko biznes przelewy zagraniczne (MT103 / CSV)

Języki programowania obiektowego Nieobiektowe elementy języka C++

ARKUSZ KALKULACYJNY komórka

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Instrukcja użytkownika

Kolumna Zeszyt Komórka Wiersz Tabela arkusza Zakładki arkuszy

Metody numeryczne Laboratorium 2

Podstawy JavaScript ćwiczenia

1 P roste e t ypy p d a d n a ych c - c ąg ą g d a d l a szy 2 T y T py p z ł z o ł żo ż ne e d a d n a ych c : T BLICE

Bazy danych Karta pracy 1

PROFFICE Opis formatu pliku wyciągów BANKOWOŚĆ ELEKTRONICZNA

Oczywiście plik musi mieć rozszerzenie *.php

OBIEKTY TECHNICZNE OBIEKTY TECHNICZNE

QUERY język zapytań do tworzenia raportów w AS/400

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

Programowanie w języku C++ Grażyna Koba

Podstawy programowania skrót z wykładów:

Wstęp do programowania

UWAGA!!! Przed przystąpieniem do zamknięcia roku proszę zrobić kopie bezpieczeństwa

Przed zaimportowaniem danych należy odpowiednio skonfigurować sposób interpretacji danych z zakładki [Ustawienie pliku importu]

Projekt Hurtownia, realizacja rejestracji dostaw produktów

Karty pracy. Ustawienia. W tym rozdziale została opisana konfiguracja modułu CRM Karty pracy oraz widoki i funkcje w nim dostępne.

Doładowania telefonów

Język programowania zbiór reguł określających, które ciągi symboli tworzą program komputerowy oraz jakie obliczenia opisuje ten program.

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach?

ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje

Ogólny schemat prostego formularza: A może lepiej zamiast przycisku opartego o input tak:

utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy,

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI

1. Wprowadzanie danych z klawiatury funkcja scanf

Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych

Analiza leksykalna 1. Języki formalne i automaty. Dr inż. Janusz Majewski Katedra Informatyki

LABORATORIUM 8,9: BAZA DANYCH MS-ACCESS

Obliczenia inżynierskie arkusz kalkulacyjny. Technologie informacyjne

Umieszczanie kodu. kod skryptu

Elementy języków programowania

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 2. Programowanie komputerowe

WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.

LibreOffice Calc VBA

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Mathcad c.d. - Macierze, wykresy 3D, rozwiązywanie równań, pochodne i całki, animacje

Języki programowania. Przetwarzanie tablic znaków. Część druga. Autorzy Tomasz Xięski Roman Simiński

Konfiguracja parametrów pozycjonowania GPS /5

Lab 9 Podstawy Programowania

Podstawy programowania

Podstawy projektowania aplikacji biznesowych w systemie SAP R/3

2 Przygotował: mgr inż. Maciej Lasota

Spis treści OPIS PLIKU W FORMACIE CSV Z DANYMI PPE LUB EP 1

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych

Tworzenie bazy danych na przykładzie Access

Pascal - wprowadzenie

1 Powtórzenie wiadomości

MATERIAŁY - udostępnianie materiałów dydaktycznych w sieci SGH

Struktura pliku wejściowego ippk Plik Składkowy

BAZY DANYCH Panel sterujący

Autoryzacja zleceń kodem SMS. Dodatek do instrukcji głównej

Delphi Laboratorium 3

Przestrzenne bazy danych Podstawy języka SQL

Język C zajęcia nr 11. Funkcje

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta Strona 1 z 26. Powrót. Full Screen. Zamknij.

Pracownia Komputerowa wyk ad VI

Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje. dr Artur Bartoszewski - Języki C i C++, sem.

Spis treści. 1 Kraj/region i język Ustawienia regionalne Liczby Waluta Czas i data Inne...

Bazy danych raporty. 1. Przekopiuj na dysk F:\ bazę M5BIB.mdb z dysku wskazanego przez prowadzącego.

Transkrypt:

Język ABAP/4

Bufor programu a roll area Programy są buforowane na serwerze aplikacji w buforze programów Dostęp do programu odbywa się podobnie jak do buforowanych tabel Wszyscy użytkownicy korzystają z tej samej kopii programu, ale z różnych (dla każdego wywołania programu) obszarów pamięci roll-area Obszary pamięci roll-area są używane do: przechowywania informacji o wykonywaniu programu i przydziale pamięci (zmienne i ich wartości, wskaźnik do bieżącej instrukcji, lista wartości wyjściowych) Każda instancja programu wymaga osobnego obszaru roll-area

Elementy składni ABAP/4 Każdy program składa się z co najmniej jednej instrukcji Każda instrukcja składa się z co najmniej jednego słowa Instrukcja zaczyna się od słowa kluczowego (wyjątek niektóre wersje instrukcji przypisania) Klauzule (w ABAP-ie nazywane uzupełnieniami) służą do modyfikowania funkcjonowania instrukcji z określonym słowem kluczowym Instrukcja może rozpoczynać się w dowolnej kolumnie i rozciągać na kilka linii Instrukcje kończą się kropką W instrukcjach nie rozróżnia się wielkich i małych liter (nieliczne wyjątki)

Obiekty danych Są to obszary pamięci używane do przechowywania danych podczas wykonywania programu Dwa typy: modyfikowalne niemodyfikowalne Niemodyfikowalne obiekty danych: stałe literały Modyfikowalne obiekty danych zmienne łańcuchy znaków (odpowiednik struktury) tabele wewnętrzne (odpowiednik tablicy) Uruchomienie programu wywołuje przydział pamięci w roll-area dla każdego obiektu danych tego programu Zakończenie wykonywania programu wiąże się ze zwolnieniem obszarów pamięci używanych dla obiektów danych Trzy poziomy widoczności obiektów: lokalny obiekt dostępny tylko wewnątrz podprogramu, w którym jest zdefiniowany globalny obiekt dostępny w dowolnym miejscu programu zewnętrzny obiekt dostępny także poza programem, w którym został zdefiniowany

Literały Literał niemodyfikowalny obiekt danych Może występować w dowolnym miejscu programu (tam gdzie jest potrzebny) Typy literałów: łańcuch znaków ciąg znaków (o rozróżnialnej wielkości) ujęty w parę znaków numeryczny wartości mogą ale nie muszą być ujęte w apostrofy (wyjątek liczba z częścią dziesiętną) zmiennopozycyjny postaci mantysaewykładnik apostrofy obowiązkowe mantysa może zawierać znak lub + oraz miejsca dziesiętne wykładnik może zawierać znak lub + oraz wiodące zera E lub e szesnastkowy apostrofy obowiązkowe wielkie litery parzysta liczba znaków rzadko używane

Zmienne Definiowane za pomocą instrukcji: DATA PARAMETERS Instrukcja DATA: składnia: DATA v1[(l)] [TYPE t] [DECIMALS d] [VALUE xxx ] lub DATA v1 LIKE v2 [VALUE xxx ] v1 oraz v2 nazwy zmiennych: długość do 30 znaków zestaw znaków alfanumeryczne oprócz +., : ( ) nie mogą składać się wyłącznie z cyfr nie mogą być takie same jak słowa kluczowe i klauzule instrukcji ABAPowych TYPE t dowolny predefiniowany typ języka ABAP lokalny typ danych typ danych słownika ABAP DECIMALS d liczba miejsc dziesiętnych (tylko typ P)

Instrukcja DATA c.d. Wartości domyślne: długość: zależna od typu typ danych: C wartość: numeryczna: 0 znakowa: pusta dla instrukcji z klauzulą LIKE: typ i długość przejmowane są ze zmiennej referencyjne wartość początkowa nie jest przejmowana ze zmiennej referencyjnej początkowa wartość domyślna może być jedynie stałą lub literałem Zmienna może być zdefiniowana w dowolnym miejscu programu, ale musi być zdefiniowana przed jej pierwszym użyciem Zalecane jest definiowanie zmiennych na początku programu

Typy znakowe Typ Opis Domyślny rozmiar Max. dł. Dopuszczalne wartości C znakowy 1 65535 Dowolny znak pusta N tekst numeryczny 1 65535 0-9 0 Domyślna wartość początkowa D data 8(stały) - 0-9 00000000 T czas 6(stały) - 0-9 000000 X szesnastkowy 1 65535 Dowolny znak Bieżąca data sy-datum Bieżący czas sy-uzeit sy-datum i sy-uzeit są ustawiane na początku wykonywania programu i później nie są już zmieniane, aby je zaktualizować należy użyć instrukcji GET TIME

Typy numeryczne Typ Opis Rozmiar domyślny Max. dł. Max. liczba miejsc dziesiętnych Dopuszczalne wartości I całkowite 4(stały) - 0-231 do +231 0 P spakowane 8 16 14 0-9 0 Domyślna wartość początkowa F zmiennopozycyjne 8 8 15* -1E-307 do 1E308 0.0

Instrukcja PARAMETERS Działanie podobne do instrukcji DATA, z tą różnicą, że zanim program się rozpocznie pojawi się tzw. ekran wyboru, na którym można wprowadzić wartości zmiennych zdefiniowanych w instrukcji PARAMETERS Nazwy parametrów (zmiennych): takie same reguły jak dla zmiennych definiowanych w instrukcji DATA różnice: maksymalnie 8 znaków domyślna wartość początkowa może być również zmienną

Składnia instrukcji PARAMETERS PARAMETERS p1[(l)] [TYPE t] [DECIMALS d] [DEFAULT xxx ] [OBLIGATORY] [LOWER CASE] [AS CHECKBOX] [RADIOBUTTON GROUP g] lub PARAMETERS p1 LIKE v1 [DEFAULT xxx ] [OBLIGATORY] [LOWER CASE] [AS CHECKBOX] [RADIOBUTTON GROUP g] Objaśnienia: p1 nazwa parametru v1 nazwa wcześniej zdefiniowanej zmiennej lub pola tabeli (struktury) l długość zmiennej t typ d liczba pól dziesiętnych (tylko dla typu P)

Klauzule instrukcji PARAMETERS TYPE jak w instrukcji DATA DECIMALS jak w instrukcji DATA LIKE jak w instrukcji DATA DEFAULT tak jak w klauzula VALUE instrukcji DATA OBLIGATORY użytkownik musi wprowadzić jakąś wartość przed wykonaniem programu LOWER CASE zapobiega automatycznej zamianie na wielkie litery AS CHECKBOX wyświetla parametr jako pole wyboru RADIOBUTTON GROUP g wyświetla parametr jako przycisk radiowy należący do grupy g (g - dowolna nazwa o długości 1-4 znaków)

Właściwości instrukcji PARAMETERS Pola obowiązkowe zaznaczone znakiem zapytania Domyślny typ: C Domyślna wartość początkowa: pusta dla typu C 0 dla pozostałych typów Klauzula DEFAULT dopuszcza użycie stałych, literałów, zmiennych i zmiennych systemowych SY- Klauzula LIKE powoduje, że parametr przyjmuje taki sam typ i rozmiar jak zmienne referencyjna Klauzula LIKE nie przyczynia się do ustalenia wartości początkowej Może występować w dowolnym miejscu programu, ale jeszcze przed pierwszym miejscem użycia Parametry występują w tym samym porządku na ekranie wyboru w jakim występują w instrukcji PARAMETERS Interpreter ABAP-a gromadzi wszystkie wystąpienia instrukcji PARAMETERS i łączy je w jednym ekranie wyboru Parametry wyświetlane w sposób domyślny Domyślne wartości początkowe przy klauzuli AS CHECKBOX to X lub (typ C długość 1) Dla przycisków radiowych domyślny typ C a długość 1, jedyna wartość dopuszczalna jako domyślna wartość początkowa to X dla przycisku, który ma być zaznaczony

Etykiety parametrów Domyślnie takie jak nazwy parametrów Mogą być zmienione: Otworzyć program w Edytorze ABAP GotoText Elements Selection Texts W oknie Change PARAMETERS/SELECT-OPTIONS: ręcznie podać etykietę pola lub skopiować ją (średnia etykieta) z elementu danych (Utilities Copy DD Text) lub ręcznie wprowadzić część etykiet a resztę skopiować z elementów danych (Utilities Supplement DD Text) Zapisać zmiany Zmiana etykiety w obiekcie słownikowym wymaga ręcznej aktualizacji (Utilities Copy DD Text lub Utilities Copy DD Texts)

LIKE czy TYPE w instrukcji PARAMETERS Zalecane LIKE Zalety LIKE: Pomoc F1 przejmowana z elementu danych Pomoc F4 przejmowana z obiektu o ile powiązano z nim tabelę kontrolną, ale bez mechanizmu walidacji Etykiety pola przejmowane z elementu danych gwarancja jednolitości wyglądu etykiety do tego samego pola we wszystkich programach Modyfikacje typu i rozmiaru danych są automatycznie od razu widoczne w programie

Stałe Definiowane instrukcją CONSTANTS Składnia: CONSTANTS c1[(l)] [TYPE t] [DECIMALS d] VALUE xxx. lub CONSTANTS c1 LIKE cv VALUE xxx. Jedna predefiniowana stała SPACE

Łańcuch pól Odpowiada strukturze słownikowej Ciąg pól zgrupowanych pod wspólną nazwą Definiowane instrukcjami DATA lub TABLES

Łańcuch pól definiowanie instrukcją DATA Składnia: DATA: BEGIN OF fs1, f1[(l)] [TYPE t] [DECIMALS d] [VALUE xxx ], f2[(l)] [TYPE t] [DECIMALS d] [VALUE xxx ], END OF fs1. lub DATA BEGIN OF fs1. DATA f1[(l)] [TYPE t] [DECIMALS d] [VALUE xxx ]. DATA f2[(l)] [TYPE t] [DECIMALS d] [VALUE xxx ]. [INCLUDE STRUCTURE st1.] DATA END OF fs1. lub DATA fs1 LIKE fs2. fs1 łańcuch pól f1, f2 pola składowe łańcucha pól fs2 zdefiniowany łańcuch pól lub nazwa tabeli (struktury) zdefiniowanej w słowniku (l) długość t typ danych d liczba miejsc dziesiętnych (tylko typ P) xxx domyślna wartość st1 nazwa tabeli (struktury) słownikowej

Łańcuch pól właściwości Odwołania do pól: fs1-fi Łańcuchy pól można zagnieżdżać Odwołania do pól zagnieżdżonego łańcucha pól wymaga podania nazw każdego łańcucha: fs1-fs2-fi Stosując konstrukcję DATA LIKE łańcuch pól można zdefiniować dokładnie tak jak jest zdefiniowana odpowiednia tabela lub struktura słownika ABAP Struktury i tabele słownika ABAP można również zagnieżdżać w łańcuchu pól (instrukcja INCLUDE STRUCTURE ) Jeżeli struktura zostanie włączona do łańcucha pól instrukcją INCLUDE to odwołanie do pól tej struktury jest standardowe fs1-fi, natomiast włączenie tej samej struktury instrukcją DATA fs2 LIKE wymaga odwołań wielopoziomowych (np. fs1-fs2-fi) Instrukcja przypisania wymaga takiej samej struktury w przypadku obydwu łańcuchów pól

Definiowanie łańcucha pól instrukcją TABLES Składnia: TABLES fs1. fs1 jest nazwą łańcucha pól w Słowniku ABAP musi istnieć tabela lub struktura o takiej samej nazwie definicja łańcucha pól fs1 jest identyczna z odpowiadającą jej definicją tabeli lub struktury Słownika ABAP definicja łańcucha pól za pomocą instrukcji TABLES umożliwia dostęp do danych tabeli o tej samej nazwie zasięg bez względu na miejsce zdefiniowania zawsze globalny i zewnętrzny (współdzielenie tego samego obszaru pamięci przez dwa programy)

Definiowanie typów Typy użytkownika można definiować za pomocą instrukcji TYPES Składnia: lub TYPES typ1[(dł)] [TYPE typ] [DECIMALS d]. TYPES typ1 LIKE zmienna1. Typ strukturalny typ użytkownika oparty na definicji łańcucha pól

Grupa typów Grupa (pula) typów jest obiektem Słownika ABAP gromadzącym definicje typów użytkownika oraz stałych Typy i stałe zdefiniowane w grupie typów mogą być używane w wielu programach Program stanowiący grupę typów musi zaczynać się od instrukcji: TYPE-POOL nazwa_grupy_typów. Odwołanie do grupy typów z poziomu programu wymaga użycia instrukcji TYPE-POOLS nazwa_grupy_typów. Wielokrotne zdefiniowanie grupy typów nie powoduje pojawienia się komunikatu o błędzie Nazwa grupy typów musi zaczynać się od Y lub Z i ni może być dłuższa niż 5 znaków. Zasięg stałych i typów zdefiniowanych instrukcją TYPE-POOLS zawsze jest globalny

Zmienne systemowe Nie wymagają definiowania Zasięg globalny i zewnętrzny Zdefiniowane w strukturze SYST Słownika ABAP Ponad 170 zmiennych Zamiast nazwy struktury SYST można stosować jej alias SY

Przykładowe zmienne systemowe Zmienna SY-DATUM SY-UZEIT SY-UNAME SY-SUBRC SY-MANDT SY-PAGNO SY-COLNO SY-LINNO SY-VLINE SY-ULINE SY-REPID SY-CPROG SY-TCODE SY-DBCNT Opis Bieżąca data Bieżący czas Bieżące ID użytkownika Poprzedni kod powrotu Numer mandanta Numer bieżącej strony Numer bieżącej kolumny Numer bieżącej linii Linia pionowa Linia pozioma Nazwa bieżącego raportu Nazwa programu głównego Kod bieżącej transakcji W pętli SELECT numer iteracji Po zakończeniu pętli SELECT (po ENDSELECT) liczba rekordów spełniających warunek klauzuli WHERE

Instrukcje przypisania Jedna z trzech instrukcji: CLEAR MOVE MOVE-CORRESPONDING

Instrukcja CLEAR Opis: przypisanie zmiennej wartości 0 lub pustych znaków (zmienna typu C) Składnia: CLEAR z1 [WITH z2 WITH lit WITH NULL] z1 i z2 zmienne lub nazwy łańcucha pól lit literał dowolnej długości Działanie: gdy z1 jest typu znakowego zmienna wypełniana jest pustymi znakami, w każdym innym przypadku (oprócz łańcucha znaków) zmienna wypełniana jest zerami gdy z1 jest łańcuchem znaków to jego składowe wypełniane są w zależności od typu tej składowej klauzula WITH z2 powoduje wypełnienie całej długości zmiennej pierwszym bajtem zmiennej z2 klauzula WITH lit powoduje wypełnienie całej długości zmiennej pierwszym bajtem podanego literału klauzula WITH NULL powoduje wypełnienie całej długości zmiennej zerami heksadecymalnymi

Instrukcja MOVE Opis: służy przypisaniu zmiennej wartości reprezentowanej przez: literał, stałą, zmienną, pole łańcucha, pole tabeli Składnia: MOVE z1 TO z2. lub z2 = z1. lub z2 = z1 = zm = zn =. lub MOVE z1[+n(l)] TO z2[+n(l)]. lub z2[+n(l)] = z1[+n(l)].

Konwersja danych automatyczna zmiana rozmiaru Typ C X N P Przypisanie do dłuższego pola Uzupełnienie z prawej pustymi znakami Uzupełnienie z prawej zerami Uzupełnienie z lewej zerami Uzupełnienie z lewej zerami Przypisanie do krótszego pola Obcięcie prawostronne Obcięcie prawostronne Obcięcie lewostronne Przypisanie następuje o ile wartość mieści się w rozmiarze zmiennej, w przeciwnym przypadku F, I, D, T Typy o stałej długości nie podlegają konwersji

Konwersja danych automatyczna zmiana typu (z typu C) Z typu Na typ Reguły C P Pole źródłowe nie może zawierać innych znaków niż: cyfry, kropka dziesiętna, opcjonalny znak (z przodu/z tyłu), puste znaki (z przodu/ z tyłu). Wyrównanie do prawej, uzupełnienie z lewej zerami. Łańcuch pustych znaków konwertowany na 0. C D Pole źródłowe powinno zawierać prawidłową datę w formacie RRRRMMDD, w przeciwnym przypadku błąd nie wystąpi i nastąpi przypisanie nieprawidłowej wartości. C T Pole źródłowe powinno zawierać poprawny czas w formacie GGMMSS. Reszta jak wyżej. C N Pole źródłowe przeglądane z lewej do prawej, ale tylko cyfry przepisywane do zmiennej docelowej (wyrównanie do prawej, uzupełnienie zerami), pozostałe znaki ignorowane. C X Z pola źródłowego do zmiennej docelowej przepisywane tylko cyfry i znaki A-F (wyrównanie do lewej, uzupełnienie zerami/obcięcie z prawej), pozostała część pola począwszy od pierwszego nieprawidłowego znaku ignorowana

Konwersja danych automatyczna zmiana typu (pozostałe) Z typu Na typ Reguły P C Gdy rozmiar C mniejszy od liczby cyfr: wyrównanie do prawej, ostatni bajt pozostawiony na znak ( - lub znak pusty), uzupełnienie z lewej zerami. Gdy rozmiar C równy liczbie cyfr: gdy jest to liczba dodatnia nie zostawia się ostatniego bajtu z prawej. Gdy rozmiar C mniejszy od liczby cyfr: obcięcie z lewej, skrajny lewy bajt ma wartość *. Gdy liczba jest 0 to wpisuje się pojedyncze zero. P D Liczba traktowana jest jako liczba dni od 1 stycznia 0001 i zamieniana na datę formatu RRRRMMDD. P T Liczba traktowana jako liczba sekund, jakie upłynęły od północy i zamieniana na czas w 24-godzinnym formacie GGMMSS. D P Data zamieniana jest na liczbę dni, jakie upłynęły od 01-01-0001. T P Czas zamieniany jest na liczbę sekund, jakie upłynęły od północy. I * * I Dla typu I obowiązują takie same zasady jak dla typu P.

Podpola Podpole - część pola, do której następuje odwołanie przez podanie offsetu i/lub długości Składnia: z1[+off][(dł)] = z2[+off][(dł)]. gdzie: z1, z2 zmienne lub pola łańcucha off offset względem początku pola dł długość podpola wyrażona w bajtach Reguły: podpole może być określone dla pola źródłowego i/lub pola docelowego podpole może być określone przez offset i/lub długość gdy brak offsetu podpole zaczyna się z początkiem pola gdy brak długości podpole rozciąga się do końca pola w specyfikacji podpola nie mogą pojawić się białe znaki offset zawsze musi być poprzedzony znakiem + długość musi być umieszczona w nawiasach

MOVE a łańcuchy pól Jeżeli nie zostanie podana nazwa składowej to łańcuch pól traktowany jest jak zmienna typu C Jeśli pole źródłowe jest kategorii znakowej (C, N, D, T, X), a pole docelowe jest łańcuchem zawierającym składowe numeryczne (typu I, P lub F), to nie jest wykonywana żadna konwersja a wynik jest nieprawidłowy i niezdefiniowany (zależny od maszyny). W odwrotnej sytuacji wynik jest również nieprawidłowy i niezdefiniowany na skutek braku konwersji Dopuszczalne jest użycie instrukcji MOVE dla dwóch łańcuchów pól pod warunkiem, że zawierają one tylko składowe typów znakowych Pola numeryczne muszą (zależnie od maszyny) znaleźć się pod odpowiednim adresem (np. parzysty), zatem czasami kompilator musi dodać pewne dodatkowe bajty do łańcucha, co powoduje pewne niespodziewane zachowanie instrukcji MOVE W przypadku łańcuchów o mieszanych (znakowych i numerycznych) polach przypisanie instrukcją MOVE dopuszczalne jest tylko wtedy, gdy dla wszystkich pól ich typy, rozmiary i położenie w łańcuchu są identyczne

Instrukcja MOVE-CORRESPONDING Opis: przypisanie wartości tych pól łańcucha, które mają taką samą nazwę jak pola drugiego łańcucha Składnia: MOVE-CORRESPONDING z1 TO z2. Właściwości: wykonanie MOVE-CORRESPONDING jest równoważne wykonaniu ciągu odpowiednich instrukcji MOVE jeżeli składowe o tej samej nazwie różnią się typem i/lub rozmiarem wykonywana jest automatyczna konwersja danych

Obliczenia Zbiór instrukcji służących do wykonywania obliczeń składa się z instrukcji: COMPUTE ADD ADD-CORRESPONDING SUBTRACT SUBTRACT-CORRESPONDING MULTIPLY MULTIPLY-CORRESPONDING DIVIDE DIVIDE-CORRESPONDING

Instrukcja COMPUTE Opis: instrukcja stosowana do wykonywania obliczeń matematycznych Składnia: COMPUTE z3 = z1 op z2 [op zn ] lub z3 = z1 op z2 [op zn ] gdzie: z3 zmienna wynikowa z1, z2, zn operandy op operatory matematyczne

Instrukcja COMPUTE - właściwości Operatory i operandy muszą być rozdzielone spacjami Priorytety operacji: funkcje wbudowane (np. SQRT(x)) ** (potęgowanie) *, /, DIV, MOD (w porządku, w jakim występują w wyrażeniu) +, - (w porządku, w jakim występują w wyrażeniu) Porządek wykonywania obliczeń można zmienić stosując nawiasy ( i ) nawiasy muszą być odseparowane spacjami (wyjątek nawias poprzedzający argumenty wywołania funkcji) Dzielenie przez zero jest niedopuszczalne Uwaga! Wyjątek dzielenie 0 przez 0 jest dopuszczalne, a wynik też jest zerem O ile konieczne, to przeprowadzana jest konwersja danych Parametr programu Fixed Point Arythmetic odpowiada za obliczenia z dokładnością do 31 miejsc po przecinku (gdy ustawiony) lub bez części ułamkowej (gdy nie ustawiony)

Instrukcje ADD, SUBTRACT, MULTIPLY oraz DIVIDE Opis: ADD dodawanie dwóch liczb SUBTRACT odejmowanie dwóch liczb MULTIPLY mnożenie dwóch liczb DIVIDE dzielenie dwóch liczb Składnia: ADD z1 TO z2. SUBTRACT z1 FROM z2. MULTIPLY z2 BY z1. DIVIDE z2 BY z1. Znaczenie: dodawanie z1 do z2 odejmowanie z1 od z2 mnożenie z2 przez z1 dzielenie z2 przez z1 Konwersje danych wykonywane w razie potrzeby

Instrukcje ADD-, SUBTRACT-, MULTIPLYoraz DIVIDE-CORRESPONDING Opis: dodawanie (odejmowanie, mnożenie, dzielenie) zawartości tych pól składowych dwóch łańcuchów, które mają taką samą nazwę Składnia: ADD-CORRESPONDING fs1 TO fs2. SUBTRACT-CORRESPONDING fs1 FROM fs2. MULTIPLY-CORRESPONDING fs2 BY fs1. DIVIDE-CORRESPONDING fs2 BY fs1. Konwersja danych, o ile musi być przeprowadzona, jest realizowana według ogólnych zasad

Operacje matematyczne na datach Na zmiennych typu D można wykonywać pewne operacje matematyczne Operand lub wynik mogą być typu P Przykład: DATA: d1 LIKE SY-DATUM, d2 LIKE d1, l_dni TYPE P. d1 = d2 = SY-DATUM. SUBTRACT 1 FROM d1. d2+6 = 01. SUBTRACT 1 FROM d2. l_dni = d1 d2.

Przypisanie dynamiczne Pole symbol (field-symbol) wskaźnik, który może być dynamicznie przydzielony do pola. Po przypisaniu pole symbol może być użyte w programie w miejscu aktualnej nazwy pola Do zdefiniowania pola symbol używana jest instrukcja: FIELD-SYMBOLS <nazwa_symbolu>. Do przypisania wartości polu symbol stosowana jest instrukcja: ASSIGN nazwa_pola TO <nazwa_symbolu>. Zastosowanie: uniwersalne programy o bardzo ogólnym charakterze, gdzie np. parametrem wejściowym jest nazwa tabeli