Professional Documents
Culture Documents
IBM S/360
S/370 24-bitowe, adresowanie 24bit
s/390 32-bitowe, adresowanie w 2 trybach (31bit/24bit), 1 bit na rozróżnienie trybu pracy
z/Series 64-bitowe, adresowanie zgodne z poprzednimi trybami + 64bit
Cechy mainframe:
- dostępność (jednoczesny dostęp tysięcy, a nawet dziesiątek tysięcy użytkowników)
- niezawodność (dostępność 24/7/365, statystycznie 52min/rok niedostępny dla użytkowników zewnętrznych)
- bezpieczeństwo danych (brak włamań, procedury backupowania, uprawnienia dostępu, szyfrowanie sprzętowe, dobre odseparowanie
różnych zadań)
- skalowalność (bez zmian w oprogramowaniu można ulepszać system, łatwo dokładać sprzęt wewnętrzny bez konieczności
wyłączania systemu)
ponadto:
- dostęp narzędzi do pamięci realizowany sprzętowo (bez sterowników)
- Channel - procesor obsługujący I/O
obsługa: TSO
login (enter userid): USERnr (np.USER8)
działa tylko "del", nie działa "backspace", "tab" służy do zmiany pola
hasło: ECTS
następnie nowe hasło, po potwierdzeniu którego się zalogujemy do znaku "***", dalej przechodzimy za pomocą "Enter", gdzie jest menu
z opcjami
aby się wylogować, wpisujemy "x", dostajemy komunikat READY i wpisujemy "LOGOFF"
Możemy przejrzeć:
SYS1.P*
Po przewinięciu w bok widać: Dsorg, Recfm
Dsorg: PS (physically sequenced)
Zbiór SYS1.IODF00.ACTLOG
Edycja:
Menu główne: -> 2
ISPF Library:
Project: prefix
Group:
Type:
Member:
Przechodzimy do:
start -> Utilities -> Data Set
Tam bierzemy:
Data Set Name: nazwa, np. ZBIOR1.TEXT
Volume Serial:
Data Set Password:
Option: A (czyli Allocate)
Wracamy (F12)
UNIT
Możliwe jednostki: TRKS, CYLS, BLKS
dla urządzeń 3390:
TRKS (rozmiar ścieżki: 56664 B)
CYLS (rozmiar cylindra: 15 * 56664 B = 849960 B
BLKS (bloki)
PRIMARY ALLOCATION
SECONDARY ALLOCATION (do 15 sztuk)
RECFM
Rekordy: F, FB, V, VB, U
LRECL (Logical Record Length) - długość rekordu, standard 80
DIR - możliwości: 0/liczba_naturalna, gdzie 0 - oznacza, że zbiór jest sekwencyjny, gdy coś innego, to oznacza ilość bloków katalogu
zbioru PDS
DSORG (PS / PDS) - PS oznacza sekwencyjny, daje to możliwość wpisania sprzecznych wartości w DIR i DSORG
W zbiorach PDS mieszczą się zbiory sekwencyjne o tej samej strukturze oraz wewnętrzny katalog (W PDSE organizuje, by nie było dziur
w zbiorach).
Na katalog przydzielone są 256 B bloki. Ilość bloków jest definiowana w pozycji DIR. W jednym bloku katalogu PDS może być wiele
wpisów (średnio 4-6 pozycji).
LIST - listingi
3 -> Utilities
2 -> Data Set
Następnie:
Space units: KB
Primary quantity: 40
Secondary quantity: 10
Directory blocks: 0
Record format: FB
Record length: 80
Block size: 0
Data set name type:
EDYCJA:
2 -> Edit
Tam w Data Set Name wpisujemy nazwe zbioru (np. zbior1.text)
Następnie przechodzimy do menu edycji
Literką "d" wpisaną na czerwonym znaku "=" powodujemy, że znika to, co zaznaczymy
==> RECOVERY ON
I - Insert
D - Deleat
R - Repeat (kopia wiersza poniżej)
Dodając liczbę przy danym poleceniu można zastosować je do wielu linii, np. I3, D5, R2
C - Copy (takze mozna podac ilosc linii)
M - Move (także można podać ilość linii)
B - Before
A - After
Operacje kończące:
F3 - Exit (zapis i koniec)
F12 - Cancel (koniec bez zapisu)
SAVE - zapis (==> SAVE)
menu File -> Save
=> RECOVERY ON
=> UNDO (przywraca stan z przed wykonania ostatniego polecenia
Operacje na kolumnach tekstu:
COLS - pokazuje podział tekstu na kolumny
)n - przesunięcie o n kolumn w prawo
(n - przesunięcie o n kolumn w lewo
n - liczba
podwójne nawiasy przesuwają ograniczony nimi blok tesktu:
((n - w lewo o n kolumn
((
Podane przez nas EL1 lub EL2 jest zbiorem, który kopiujemy.
Ograniczenia:
Rekordy formatu tylko F->F lub V->V (nie da się z niezdefiniowalnym formatem, czyli U), zblokowane lub nie
Drogi kopiowania:
PS -> PS lub PS -> member PDS
member PDS -> member PDS lub member PDS -> PS
Nie można: PDS -> PDS -- potrzebny jest do tego IEBCOPY
Długość rekordów <= 256 B
Przykład polecenia:
COPY FDS ('SYS1.PARMLIB(ABC)') TDS ('MOJA.KOPIA1') NOTRANS
TRANSMIT:
- nodeid.userid
gdzie nodeid -> parametr pozycyjny (nazwa komputera znana użytkownikowi, np. TSTMVS01)
a userid -> nazwa logowania
potem:
- DA(nazwa) - skrót od DATASET
RECEIVE
DELETE - usuń
END - na później (wstrzymaj)
[enter]
DATASET(inna.nazwa)
Skopiować ZBIOR1.TEXT (sekwencyjny) do ZBIOR2.TEXT (sekwencyjny) i do BIBL3.TEXT(EL1) (PDS), gdzie EL1 to member
kopiowanie PDSa:
Teoria:
MESSAGE
MSGDAY(nazwa)
put.NAMES.TEXT
-> :nick.JA :node.TSTMVS01
:userid.nazwa-użytkownika
:name.JAN KOWALSKI
:nick.TY ...
przed tym mogą też być:
:prolog
:epilog
ALLOCATE, skrótowo: ALLOC - przydzielanie zbiorów aplikacjom
Operandy:
DATASET(nazwa_zbioru) FILE(nazwa_pliku) SYSIN / SYSOUT / SYSUT1, skrótowo: DA
NEW \ - nowoutworzony
SHR = rodzaj dostępu - shareable (współdzielony) - dostęp tylko do odczytu, niewyłączny, zbiór istnieje
OLD / - zbiór istnieje, dostęp do zapisu i odczytu, wyłączny
MOD / - jeśli zbiór nie istnieje, to NEW, a jeśli istnieje i jest sekwencyjny to dostęp wyłączny, dopisywanie
Przeznaczenie po zakończeniu:
DELETE - usunąć
KEEP - zachować
CATALOG - zachować + dopisać do katalogu systemowego
UNCATALOG - zachować, ale wpis usunąć z katalogu systemowego
DSORG(organizacja zbioru)
PS - sekwencyjny
PO - PDS
RECFM(format)
F[B] - rekord o stałej długości [zblokowany]
V[B] - rekord o zmiennej długości [zblokowany]
U - rekord o nieokreślonej długości [zblokowany]
uwaga: B oznacza, czy jest zblokowany, czy nie
Jednostki miary:
TRACKS - ścieżki na dysku (przyklad: no 3390 ok. 54kB)
CYLINDERS - cylindry na dysku
BLOCK(n) - gdzie n to ilość bajtów
NOWY1.TEXT
- sekwencyjny
- rekordy stałej długości
- długość rek. 80
- jednostka miary 1024B
- pierw. 10
- dodatk. 15
SKRYPTY.CLIST
- PDS
- rekordy stałej długości
- długość rek. 80
- jednostka miary TRACKS //(odpowiada BLOCK(80))
- pierw. 1
- dodatk. 1
ALLOCATE DATASET(SKRYPTY.CLIST) NEW CATALOG DSORG(PO) RECFM(F) LRECL(80) TRACKS SPACE(1,1) DIR(10)
Edytujemy:
ALLOC DA(*) FILE(SYSPRINT)
ALLOC DA(NOWY1.TEXT) FILE(SYSIN) SHR REUSE
ALLOC DA(ZBIOR1.TEXT) FILE(SYSUT1) SHR
ALLOC DA(WYNIK1.TEXT) FILE(SYSUT2) LIKE(ZBIOR1.TEXT) DSORG(PO) DIR(10)
CALL 'SYS1.LINKLIB(IEBGENER)'
bla
bla
#1
pierwsza wyrozniona linia
bla
#2
druga wyrozniona linia
bla
#3
trzecia wyrozniona linia
bla
bla
GENERATE MAXNAME=4,MAXGPS=3
MEMBER NAME=MEM1
RECORD IDENT=(2,'#1',1)
MEMBER NAME=MEM2
RECORD IDENT=(2,'#2',1)
MEMBER NAME=MEM3
RECORD IDENT=(2,'#3',1)
MEMBER NAME=MEM4
/*
Uwaga:
Wszystkie linie poza /* muszą być w drugiej lub dalszej kolumnie
MAXNAME LICZBA POWSTAJACYCH PLIKOW
MAXGPS LICZBA ZNACZNIKOW
MAXNAME oznacza ilość znaczników
MAXGPS oznacza ilość znaków, z których składa się znacznik
W polach RECORD IDENT cyfra 2 oznacza ilość znaków (długość znacznika), a cyfra 1 - od której linii(kolumny) się znacznik zaczyna
Uwaga !!!
NOWY2.TEXT - sekwencyjny (PS)
WYNIK2.TEXT, SKRYPTY.CLIST - PDS
W pliku NOWY2.TEXT należy wpisać:
COPY INDD=SYSUT1,OUTDD=SYSUT2
/*
Uruchomienie skryptu:
EXEC SKRYPTY.CLIST(MEMB2)
C oznacza change
< oznacza małą literę
> oznacza duza litere
np.
PROC 1 ZBWE ZBWY(ZBIOR.TMP)
...
ALLOCATE DA(&ZBWE) FILE(SYSUT1) SHR REUSE
ALLOC DA(&ZBWY) LIKE (&ZBWE)
Wywołanie:
exec skrypty.clist(memb2) 'bibl1.text ZBWY(WYNIK2.TEXT)'
uwagi:
* cała lista parametrów w apostrofach
* ZBWY - nazwa parametru niepozycyjnego
Przesyłanie:
=> receive
=> transmit tstmvs01.banasip da(skrypty1.text) msgda(skrypty1.text)
=> EXEC skrypty(skrypt2)
===> ALLOC DATASET(SKRYPTY.CLIST) new catalog DSORG(PO) RECFM(F,B) LRECL(80) TRACKS space(1,11) DIR(10)
=>smcopy FDS() TDS() NOTRANS