VSAM - Hızlı Kılavuz
Sanal Depolama Erişim Yöntemi (VSAM), bir katalog yapısı aracılığıyla verileri düzenleyen ve koruyan yüksek performanslı erişim yöntemi ve veri kümesi organizasyonudur. Sanal depolama konseptini kullanır ve veri setlerini çeşitli seviyelerde şifreler vererek koruyabilir. VSAM, fiziksel sıralı dosyalar gibi COBOL programlarında kullanılabilir. VSAM, kayıtların depolanması için mantıksal veri kümeleridir. Dosyalar, VSAM'de sırayla ve rastgele okunabilir. Sıralı Dosyalar gibi geleneksel dosya sistemlerinin bazı sınırlamalarının üstesinden gelen gelişmiş bir veri saklama yöntemidir.
VSAM'ın özellikleri
VSAM'ın özellikleri aşağıdadır -
VSAM, parolaları kullanarak verileri yetkisiz erişime karşı korur.
VSAM, veri setlerine hızlı erişim sağlar.
VSAM, performansı optimize etme seçeneklerine sahiptir.
VSAM, hem toplu hem de çevrimiçi ortamda veri kümesi paylaşımına izin verir.
VSAM, veri depolamada daha yapılandırılmış ve organize edilmiştir.
Boş alan, VSAM dosyalarında otomatik olarak yeniden kullanılır.
VSAM'ın sınırlamaları
VSAM'ın tek sınırlaması, TAPE biriminde depolanamamasıdır. Her zaman DASD alanında saklanır. Uygun maliyetli olmayan verileri depolamak için birkaç silindir gerektirir.
VSAM aşağıdaki bileşenlerden oluşur -
- VSAM Kümesi
- Kontrol Alanı
- Kontrol Aralığı
VSAM Kümesi
VSAM, kayıtların depolanması için mantıksal veri kümeleridir ve kümeler olarak bilinir. Bir küme, veri kümesinin dizin, sıra kümesi ve veri bölümlerinin bir birleşimidir. Bir VSAM kümesinin kapladığı alan, Kontrol Aralıkları adı verilen bitişik alanlara bölünmüştür. Kontrol aralıklarını daha sonra bu modülde tartışacağız.
Bir VSAM kümesinde iki ana bileşen vardır -
Index Componentdizin bölümünü içerir. Dizin kayıtları, Dizin bileşeninde mevcuttur. İndeks bileşenini kullanarak VSAM, veri bileşeninden kayıtları alabilir.
Data Componentveri bölümünü içerir. Gerçek veri kayıtları Veri bileşeninde mevcuttur.
Kontrol Aralığı
VSAM'deki Kontrol Aralıkları (CI), VSAM olmayan veri kümeleri için bloklara eşdeğerdir. VSAM olmayan yöntemlerde, veri birimi blok tarafından tanımlanır. VSAM, Kontrol Aralıkları olarak bilinen mantıksal veri alanıyla çalışır.
Denetim Aralıkları, bir disk ile işletim sistemi arasındaki en küçük aktarım birimidir. Bir kayıt doğrudan depodan alındığında, kaydı içeren tüm CI VSAM Giriş-Çıkış arabelleğine okunur. İstenen kayıt daha sonra VSAM tamponundan çalışma alanına aktarılır.
Kontrol Aralığı şunlardan oluşur:
- Mantıksal Kayıtlar
- Kontrol bilgi alanları
- Boş alan
Bir VSAM veri kümesi yüklendiğinde, kontrol aralıkları oluşturulur. Varsayılan Kontrol Aralığı boyutu 4K bayttır ve 32K bayta kadar genişletilebilir.
Kontrol Aralığının Analizi
Aşağıdaki programda kullanılan terimlerin açıklaması aşağıdadır -
R1..R5 - Kontrol Aralığına kaydedilen kayıtlar.
FS - FS, veri kümesinin daha fazla genişletilmesi için kullanılabilen boş alandır.
RDF- RDF, Kayıt Tanımlama Alanları olarak bilinir. RDF 3 bayt uzunluğundadır. Kayıtların uzunluğunu açıklar ve aynı uzunlukta kaç bitişik kaydın olduğunu söyler.
CIDF- CIDF, Kontrol Aralığı Tanımlama Alanları olarak bilinir. CIDF 4 bayt uzunluğundadır ve Kontrol Aralığı hakkında bilgi içerir.
Kontrol Alanı
İki veya daha fazla Kontrol Aralığı bir araya getirilerek bir Kontrol Alanı (CA) oluşturulur. Bir VSAM veri kümesi, bir veya daha fazla Denetim Alanından oluşur. VSAM'nin boyutu her zaman Kontrol Alanının bir katıdır. VSAM dosyaları, Denetim Alanları birimlerinde genişletilir.
Aşağıda Kontrol Alanı örneği verilmiştir -
VSAM kümesi, JCL. JCL kullanırIDCAMSküme oluşturmak için yardımcı program. IDCAMS, erişim yöntemi hizmetleri için IBM tarafından geliştirilmiş bir yardımcı programdır. Öncelikle VSAM veri kümelerini tanımlamak için kullanılır.
Bir Küme Tanımlama
Aşağıdaki sözdizimi, altında gruplanan ana parametreleri gösterir. Define Cluster, Data ve Index.
.DEFINE CLUSTER (NAME(vsam-file-name) -
BLOCKS(number) -
VOLUMES(volume-serial) -
[INDEXED / NONINDEXED / NUMBERED / LINEAR] -
RECSZ(average maximum) -
[FREESPACE(CI-Percentage,CA-Percentage)] -
CISZ(number) -
[KEYS(length offset)] -
[READPW(password)] -
[FOR(days)|TO(date)] -
[UPDATEPW(password)] -
[REUSE / NOREUSE] ) -
DATA -
(NAME(vsam-file-name.data)) -
INDEX -
(NAME(vsam-file-name.index)) -
CATALOG(catalog-name[/password]))
CLUSTER düzeyindeki parametreler tüm kümeye uygulanır. DATA veya INDEX düzeyindeki parametreler yalnızca veri veya dizin bileşeni için geçerlidir.
Her bir parametreyi aşağıdaki tabloda ayrıntılı olarak tartışacağız -
Sr.No | Açıklamalı Parametreler |
---|---|
1 | DEFINE CLUSTER Küme Tanımla komutu, bir küme tanımlamak ve küme ve bileşenleri için parametre özniteliklerini belirtmek için kullanılır. |
2 | NAME NAME, kendisi için kümeyi tanımladığımız VSAM dosyasının adını belirtir. |
3 | BLOCKS Bloklar, küme için atanan blok sayısını belirtir. |
4 | VOLUMES Birimler, kümeyi veya bileşeni içerecek bir veya daha fazla birimi belirtir. |
5 | INDEXED / NONINDEXED / NUMBERED / LINEAR Bu parametre, oluşturduğumuz veri kümesinin türüne bağlı olarak INDEXED, NONINDEXED veya NUMBERED olmak üzere üç değer alabilir. Anahtar sıralı (KSDS) dosyalar için INDEXED seçeneği kullanılır. Giriş sıralı (ESDS) dosyalar için NONINDEXED seçeneği kullanılır. Göreli kayıt (RRDS) dosyaları için NUMARALI seçeneği gereklidir. Doğrusal (LDS) dosyalar için DOĞRUSAL seçeneği gereklidir. Bu parametrenin varsayılan değeri INDEXED'dir. Gelecek modüllerde KSDS, ESDS, RRDS ve LDS hakkında daha fazla tartışacağız. |
6 | RECSZ Kayıt Boyutu parametresinin Ortalama ve Maksimum kayıt boyutu olmak üzere iki değeri vardır. Ortalama, dosyadaki mantıksal kayıtların ortalama uzunluğunu belirtir ve Maksimum, kayıtların uzunluğunu belirtir. |
7 | FREESPACE Boş alan, veri bileşeninin kontrol aralıkları (CI) ve kontrol alanları (CA) için ayrılacak boş alan yüzdesini belirtir. Bu parametrenin varsayılan değeri yüzde sıfırdır. |
8 | CISZ CISZ, Kontrol aralığı boyutu olarak bilinir. Kontrol aralıklarının boyutunu belirtir. |
9 | KEYS Keys parametresi yalnızca anahtar sıralı (KSDS) dosyalarda tanımlanır. İlk sütundan birincil anahtarın uzunluğunu ve ofsetini belirtir. Bu parametrenin değer aralığı 1 ila 255 bayttır. |
10 | READPW READPW parametresindeki değer, okuma seviyesinin şifresini belirtir. |
11 | FOR/TO Bu parametrenin değeri, dosyanın saklanması için tarih ve gün cinsinden süre miktarını belirtir. Bu parametrenin varsayılan değeri sıfır gündür. |
12 | UPDATEPW UPDATEPW parametresindeki değer, güncelleme seviyesinin şifresini belirtir. |
13 | REUSE / NOREUSE REUSE parametresi, kümeleri silmeden ve yeniden tanımlamadan boş duruma sıfırlanabilen kümelerin tanımlanmasına izin verir. |
14 | DATA - NAME Kümenin DATA bölümü, dosyanın gerçek verilerini içeren veri kümesi adını içerir. |
15 | INDEX-NAME Kümenin INDEX bölümü, veri bölümündeki ilgili kayıt için birincil anahtarı ve bellek işaretçisini içerir. Anahtar Sıralı küme kullanıldığında tanımlanır. |
16 | CATALOG Katalog parametresi, dosyanın tanımlanacağı kataloğu belirtir. Kataloğu gelecek modüllerde ayrı ayrı tartışacağız. |
Misal
Aşağıda, JCL'de bir kümenin nasıl tanımlanacağını gösteren temel bir örnek verilmiştir -
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = IDCAMS
//SYSPRINT DD SYSOUT = *
//SYSIN DD *
DEFINE CLUSTER (NAME(MY.VSAM.KSDSFILE) -
INDEXED -
RECSZ(80 80) -
TRACKS(1,1) -
KEYS(5 0) -
CISZ(4096) -
FREESPACE(3 3) ) -
DATA (NAME(MY.VSAM.KSDSFILE.DATA)) -
INDEX (NAME(MY.VSAM.KSDSFILE.INDEX))
/*
Yukarıdaki JCL'yi Mainframes sunucusunda çalıştıracaksanız. MAXCC = 0 ile çalışmalı ve MY.VSAM.KSDSFILE VSAM dosyasını oluşturacaktır.
Bir Kümeyi Silme
Bir VSAM dosyasını silmek için, VSAM kümesinin IDCAMS yardımcı programı kullanılarak silinmesi gerekir. DELETE komutu, VSAM kümesinin girişini katalogdan kaldırır ve isteğe bağlı olarak dosyayı kaldırır, böylece nesnenin kapladığı alanı serbest bırakır. VSAM veri setinin süresi dolmamışsa silinmeyecektir. Bu tür veri kümelerini silmek için DOLDUR seçeneğini kullanın.
DELETE data-set-name CLUSTER
[ERASE / NOERASE]
[FORCE / NOFORCE]
[PURGE / NOPURGE]
[SCRATCH / NOSCRATCH]
Yukarıdaki sözdizimi, Delete deyimi ile kullanabileceğimiz parametreleri göstermektedir. Her birini aşağıdaki tabloda ayrıntılı olarak tartışacağız -
Sr.No | Açıklamalı Parametreler |
---|---|
1 | ERASE / NOERASE Katalogda nesne için belirtilen ERASE özniteliğini geçersiz kılmak için ERASE seçeneği belirtildi. NOERASE seçeneği varsayılan olarak alınır. |
2 | FORCE / NOFORCE FORCE seçeneği, SPACE ve USERCATALOG'u boş olmasa bile silmek için belirtildi. NOFORCE seçeneği varsayılan olarak alınır. |
3 | PURGE / NOPURGE Veri setinin süresi dolmamışsa, VSAM veri setini silmek için PURGE seçeneği kullanılır. NOPURGE seçeneği varsayılan olarak alınır. |
4 | SCRATCH / NOSCRATCH SCRATCH seçeneği, nesnenin ilişkili girdisini İçindekiler Hacim Tablosundan kaldırmak için belirtilir. Esas olarak GDG'ler gibi vsam olmayan veri kümeleri için kullanılır. NOSCRATCH seçeneği varsayılan olarak alınır. |
Misal
Aşağıda, JCL'de bir kümenin nasıl silineceğini gösteren temel bir örnek verilmiştir -
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEPNAME EXEC PGM = IDCAMS
//SYSPRINT DD SYSOUT = *
//SYSIN DD *
DELETE MY.VSAM.KSDSFILE CLUSTER
PURGE
/*
Yukarıdaki JCL'yi Mainframes sunucusunda çalıştıracaksanız. MAXCC = 0 ile çalışmalı ve MY.VSAM.KSDSFILE VSAM dosyasını silecektir.
ESDS, Giriş Sıralı Veri Kümesi olarak bilinir. Giriş sıralı bir veri kümesi, daha fazla özellik içeren sıralı dosya organizasyonu gibi davranır. Kayıtlara doğrudan ulaşabiliriz ve güvenlik amacıyla şifreleri de kullanabiliriz. KodlamalıyızNONINDEXEDESDS veri kümeleri için DEFINE CLUSTER komutunun içinde. ESDS'nin temel özellikleri aşağıdadır -
ESDS kümesindeki kayıtlar, veri kümesine eklendikleri sırayla saklanır.
Kayıtlara fiziksel adres olarak başvurulur. Relative Byte Address (RBA). Bir ESDS veri kümesinde 80 baytlık kaydımız varsa, ilk kaydın RBA'sı 0, ikinci kayıt için RBA 80, üçüncü kayıt için 160 ve benzeri olacağını varsayalım.
Kayıtlara sıralı olarak RBA olarak bilinen addressed access.
Kayıtlar, eklendikleri sıraya göre tutulur. Sonuna yeni kayıtlar eklenir.
ESDS veri setinde kayıtların silinmesi mümkün değildir. Ancak etkin değil olarak işaretlenebilirler.
ESDS veri setindeki kayıtlar sabit uzunlukta veya değişken uzunlukta olabilir.
ESDS endekslenmemiş. Anahtarlar ESDS veri kümesinde mevcut değildir, bu nedenle yinelenen kayıtlar içerebilir.
ESDS, diğer dosyalar gibi COBOL programlarında kullanılabilir. Dosya adını JCL'de belirteceğiz ve ESDS dosyasını program içinde işlemek için kullanabiliriz. COBOL programında dosya organizasyonunu şu şekilde belirtin:Sequential ve erişim modu olarak Sequential ESDS veri seti ile.
ESDS kümesinin tanımlanması
Aşağıdaki sözdizimi, ESDS kümesi oluştururken hangi parametreleri kullanabileceğimizi gösterir. Parametre açıklaması VSAM - Küme modülünde belirtilenle aynı kalır.
DEFINE CLUSTER (NAME(esds-file-name) -
BLOCKS(number) -
VOLUMES(volume-serial) -
NONINDEXED -
RECSZ(average maximum) -
[FREESPACE(CI-Percentage,CA-Percentage)] -
CISZ(number) -
[READPW(password)] -
[FOR(days)|TO(date)] -
[UPDATEPW(password)] -
[REUSE / NOREUSE]) -
DATA -
(NAME(esds-file-name.data))
Misal
Aşağıdaki örnek, IDCAMS yardımcı programını kullanarak JCL'de bir ESDS kümesinin nasıl oluşturulacağını göstermektedir -
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = IDCAMS
//SYSPRINT DD SYSOUT = *
//SYSIN DD *
DEFINE CLUSTER (NAME(MY.VSAM.ESDSFILE) -
NONINDEXED -
RECSZ(80 80) -
TRACKS(1,1) -
CISZ(4096) -
FREESPACE(3 3) ) -
DATA (NAME(MY.VSAM.ESDSFILE.DATA))
/*
Yukarıdaki JCL'yi Mainframes sunucusunda çalıştıracaksanız. MAXCC = 0 ile çalışmalı ve MY.VSAM.ESDSFILE VSAM dosyasını oluşturacaktır.
ESDS Kümesini Silme
ESDS kümesi, IDCAMS yardımcı programı kullanılarak silinir. DELETE komutu, VSAM kümesinin girişini katalogdan kaldırır ve isteğe bağlı olarak dosyayı kaldırır, böylece nesnenin kapladığı alanı serbest bırakır.
DELETE data-set-name CLUSTER
[ERASE / NOERASE]
[FORCE / NOFORCE]
[PURGE / NOPURGE]
[SCRATCH / NOSCRATCH]
Yukarıdaki sözdizimi, ESDS kümesini silerken hangi parametreleri kullanabileceğimizi gösterir. Parametre açıklaması VSAM - Küme modülünde belirtilenle aynı kalır.
Misal
Aşağıdaki örnek, IDCAMS yardımcı programını kullanarak JCL'de bir ESDS kümesinin nasıl silineceğini gösterir -
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEPNAME EXEC PGM = IDCAMS
//SYSPRINT DD SYSOUT = *
//SYSIN DD *
DELETE MY.VSAM.ESDSFILE CLUSTER
/*
Yukarıdaki JCL'yi Mainframes sunucusunda çalıştıracaksanız. MAXCC = 0 ile çalışmalı ve MY.VSAM.ESDSFILE VSAM Kümesini silecektir.
KSDS, Anahtar Sıralı Veri Kümesi olarak bilinir. Anahtar sıralı veri seti (KSDS), ESDS ve RRDS'den daha karmaşıktır, ancak daha kullanışlı ve çok yönlüdür. KodlamalıyızINDEXEDKSDS veri kümeleri için DEFINE CLUSTER komutunun içinde. KSDS kümesi aşağıdaki iki bileşenden oluşur:
Index- KSDS kümesinin dizin bileşeni, veri bileşenindeki karşılık gelen kayıtlara işaretçilerle birlikte kümedeki kayıtlar için anahtar değerlerin listesini içerir. Dizin bileşeni, bir KSDS kaydının fiziksel adresini belirtir. Bu, her kaydın anahtarını kaydın veri kümesindeki göreceli konumu ile ilişkilendirir. Bir kayıt eklendiğinde veya silindiğinde, bu dizin buna göre güncellenir.
Data- KSDS kümesinin veri bileşeni, gerçek verileri içerir. Bir KSDS kümesinin veri bileşenindeki her kayıt, aynı sayıda karaktere sahip bir anahtar alan içerir ve her kayıtta aynı göreceli konumda meydana gelir.
Aşağıdakiler KSDS'nin temel özellikleridir -
KSDS veri kümesindeki kayıtlar her zaman anahtar alanına göre sıralı olarak tutulur. Kayıtlar, anahtarla artan, harmanlayarak saklanır.
Kayıtlara sıralı olarak erişilebilir ve doğrudan erişim de mümkündür.
Kayıtlar bir anahtar kullanılarak tanımlanır. Her kaydın anahtarı, kayıt içinde önceden tanımlanmış bir konumda bulunan bir alandır. Her anahtar, KSDS veri kümesinde benzersiz olmalıdır. Dolayısıyla kayıtların çoğaltılması mümkün değildir.
Yeni kayıtlar eklendiğinde, kayıtların mantıksal sırası anahtar alanının harmanlama sırasına bağlıdır.
KSDS veri kümesindeki kayıtlar sabit uzunlukta veya değişken uzunlukta olabilir.
KSDS kullanılabilir COBOLdiğer dosyalar gibi programlar. Dosya adını JCL'de belirteceğiz ve KSDS dosyasını program içinde işlemek için kullanabiliriz. COBOL programında dosya organizasyonunu şu şekilde belirtin:Indexed ve herhangi bir erişim modunu kullanabilirsiniz (Sequential, Random or Dynamic) KSDS veri kümesiyle.
KSDS Dosya Yapısı
Belirli bir kaydı aramak için benzersiz bir anahtar değeri veriyoruz. Dizin bileşeninde anahtar değeri aranır. Anahtar bulunduğunda, veri bileşenine atıfta bulunan karşılık gelen hafıza adresi alınır. Bellek adresinden, veri bileşeninde depolanan gerçek verileri alabiliriz. Aşağıdaki örnek, dizin ve veri dosyasının temel yapısını göstermektedir -
KSDS Kümesini Tanımlama
Aşağıdaki sözdizimi, KSDS kümesi oluştururken hangi parametreleri kullanabileceğimizi gösterir.
Parametre açıklaması VSAM - Küme modülünde belirtilenle aynı kalır.
DEFINE CLUSTER (NAME(ksds-file-name) -
BLOCKS(number) -
VOLUMES(volume-serial) -
INDEXED -
KEYS(length offset) -
RECSZ(average maximum) -
[FREESPACE(CI-Percentage,CA-Percentage)] -
CISZ(number) -
[READPW(password)] -
[FOR(days)|TO(date)] -
[UPDATEPW(password)] -
[REUSE / NOREUSE]) -
DATA -
(NAME(ksds-file-name.data)) -
INDEX -
(NAME(ksds-file-name.index))
Misal
Aşağıdaki örnek, IDCAMS yardımcı programını kullanarak JCL'de bir KSDS kümesinin nasıl oluşturulacağını göstermektedir -
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = IDCAMS
//SYSPRINT DD SYSOUT = *
//SYSIN DD *
DEFINE CLUSTER (NAME(MY.VSAM.KSDSFILE) -
INDEXED -
KEYS(6 1) -
RECSZ(80 80) -
TRACKS(1,1) -
CISZ(4096) -
FREESPACE(3 3) ) -
DATA (NAME(MY.VSAM.KSDSFILE.DATA)) -
INDEX (NAME(MY.VSAM.KSDSFILE.INDEX)) -
/*
Yukarıdaki JCL'yi Mainframes sunucusunda çalıştıracaksanız. MAXCC = 0 ile çalışmalı ve MY.VSAM.KSDSFILE VSAM dosyasını oluşturacaktır.
KSDS Kümesini Silme
KSDS kümesi, IDCAMS yardımcı programı kullanılarak silinir. DELETE komutu, VSAM kümesinin girişini katalogdan kaldırır ve isteğe bağlı olarak dosyayı kaldırır, böylece nesnenin kapladığı alanı serbest bırakır.
DELETE data-set-name CLUSTER
[ERASE / NOERASE]
[FORCE / NOFORCE]
[PURGE / NOPURGE]
[SCRATCH / NOSCRATCH]
Yukarıdaki sözdizimi, KSDS kümesini silerken hangi parametreleri kullanabileceğimizi gösterir. Parametre açıklaması VSAM - Küme modülünde belirtilenle aynı kalır.
Misal
Aşağıdaki örnek, IDCAMS yardımcı programını kullanarak JCL'de bir KSDS kümesinin nasıl silineceğini gösterir -
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEPNAME EXEC PGM = IDCAMS
//SYSPRINT DD SYSOUT = *
//SYSIN DD *
DELETE MY.VSAM.KSDSFILE CLUSTER
/*
Yukarıdaki JCL'yi Mainframes sunucusunda çalıştıracaksanız. MAXCC = 0 ile çalışmalı ve MY.VSAM.KSDSFILE VSAM Kümesini silecektir.
RRDS, Göreceli Kayıt Veri Kümesi olarak bilinir. RRDS kümesi bir ESDS kümesine benzer. Tek fark, RRDS kayıtlarına erişim sağlamasıdır.Relative Record Number (RRN), kodlamalıyız NUMBEREDDEFINE CLUSTER komutunun içinde. RRDS'nin temel özellikleri aşağıdadır -
Göreceli kayıt veri kümesinde, Relative Record Number (RRN), ilk kayda göre sıra numarasıdır.
RRDS, kayıt 1, kayıt 2 vb. Gibi numaralara göre kayıtlara erişime izin verir. Bu, rastgele erişim sağlar ve uygulama programının istenen kayıt numaralarını almak için bir yolu olduğunu varsayar.
Bir RRDS veri kümesindeki kayıtlara, sırayla, göreceli kayıt numarası sırasına göre veya doğrudan istenen kaydın göreceli kayıt numarası sağlanarak erişilebilir.
Bir RRDS veri kümesindeki kayıtlar, sabit uzunluklu aralıklarda saklanır. Her bir kayda, yuvasının numarası ile başvurulur, sayı 1 ile veri kümesindeki maksimum kayıt sayısı arasında değişebilir.
Bir RRDS'deki kayıtlar, boş bir yuvaya yeni kayıt eklenerek yazılabilir.
Kayıtlar bir RRDS kümesinden silinebilir ve böylece boş bir yuva bırakılabilir.
Sabit uzunlukta kayıtlar veya RRDS veri kümelerini kullanabilen bağlamsal anlamı olan bir kayıt numarası kullanan uygulamalar.
RRDS kullanılabilir COBOLdiğer dosyalar gibi programlar. Dosya adını JCL'de belirteceğiz ve KSDS dosyasını program içinde işlemek için kullanabiliriz. COBOL programında dosya organizasyonunu şu şekilde belirtin:RELATIVE ve herhangi bir erişim modunu kullanabilirsiniz (Sequential, Random or Dynamic) RRDS veri kümesiyle.
RRDS Dosya Yapısı
Alan, RRDS dosya yapısında sabit uzunlukta yuvalara bölünmüştür. Bir yuva tamamen boş veya tamamen dolu olabilir. Böylece boş slotlara yeni kayıtlar eklenebilir ve mevcut kayıtlar dolu slotlardan silinebilir. Göreceli Kayıt Numarası vererek herhangi bir kayda doğrudan erişebiliriz. Aşağıdaki örnek, veri dosyasının temel yapısını göstermektedir -
Veri Bileşeni
Göreli Kayıt Numarası | Kayıt Alanı 1 | Kayıt Alanı 2 |
---|---|---|
1 | Öğretici | Nokta |
2 | Mohtashim | M. |
3 | Nishant | Malik |
RRDS Kümesini Tanımlama
Aşağıdaki sözdizimi, RRDS kümesi oluştururken hangi parametreleri kullanabileceğimizi gösterir.
Parametre açıklaması VSAM - Küme modülünde belirtilenle aynı kalır.
DEFINE CLUSTER (NAME(rrds-file-name) -
BLOCKS(number) -
VOLUMES(volume-serial) -
NUMBERED -
RECSZ(average maximum) -
[FREESPACE(CI-Percentage,CA-Percentage)] -
CISZ(number) -
[READPW(password)] -
[FOR(days)|TO(date)] -
[UPDATEPW(password)] -
[REUSE / NOREUSE]) -
DATA -
(NAME(rrds-file-name.data))
Misal
Aşağıdaki örnek, IDCAMS yardımcı programını kullanarak JCL'de bir RRDS kümesinin nasıl oluşturulacağını göstermektedir -
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = IDCAMS
//SYSPRINT DD SYSOUT = *
//SYSIN DD *
DEFINE CLUSTER (NAME(MY.VSAM.RRDSFILE) -
NUMBERED -
RECSZ(80 80) -
TRACKS(1,1) -
REUSE -
FREESPACE(3 3) ) -
DATA (NAME(MY.VSAM.RRDSFILE.DATA))
/*
Yukarıdaki JCL'yi Mainframes sunucusunda çalıştıracaksanız. MAXCC = 0 ile çalışmalı ve MY.VSAM.RRDSFILE VSAM dosyasını oluşturacaktır.
RRDS Kümesini Silme
RRDS kümesi, IDCAMS yardımcı programı kullanılarak silinir. DELETE komutu, VSAM kümesinin girişini katalogdan kaldırır ve isteğe bağlı olarak dosyayı kaldırır, böylece nesnenin kapladığı alanı serbest bırakır.
DELETE data-set-name CLUSTER
[ERASE / NOERASE]
[FORCE / NOFORCE]
[PURGE / NOPURGE]
[SCRATCH / NOSCRATCH]
Yukarıdaki sözdizimi, RRDS kümesini silerken hangi parametreleri kullanabileceğimizi gösterir. Parametre açıklaması VSAM - Küme modülünde belirtilenle aynı kalır.
Misal
Aşağıdaki örnek, IDCAMS yardımcı programını kullanarak JCL'de bir RRDS kümesinin nasıl silineceğini gösterir -
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEPNAME EXEC PGM = IDCAMS
//SYSPRINT DD SYSOUT = *
//SYSIN DD *
DELETE MY.VSAM.RRDSFILE CLUSTER
/*
Yukarıdaki JCL'yi Mainframes sunucusunda çalıştıracaksanız. MAXCC = 0 ile çalışmalı ve MY.VSAM.RRDSFILE VSAM Kümesini silecektir.
LDS, Doğrusal Veri Kümesi olarak bilinir. Doğrusal veri kümesi, geleneksel işletim sistemi dosyalarında kullanılan bayt akışı veri kümesinin tek biçimidir. Doğrusal veri kümeleri nadiren kullanılır. LDS'nin temel özellikleri şunlardır -
Doğrusal veri kümeleri, CI'sına gömülü herhangi bir kontrol bilgisine sahip olmadığından RDF'leri ve CIDF'leri içermez.
Doğrusal veri kümelerinde sanal depolamada bayt adresli dizeler olarak erişilebilen veriler.
Doğrusal veri kümelerinin kontrol aralığı boyutu 4KByte'dır.
LDS, katalogdaki IDCAMS ve VSAM'ye özgü bilgilerin kullanımı gibi bazı VSAM olanaklarına sahip bir tür vsam olmayan dosyadır.
DB2 şu anda Doğrusal Veri Kümelerinin en büyük kullanıcısıdır.
IDCAMS, bir LDS'yi tanımlamak için kullanılır, ancak bir Virtual-In-Virtual (DIV) makrosu kullanılarak erişilir.
Doğrusal veri kümesinde kayıt kavramları yoktur. Tüm LDS baytları veri baytlarıdır.
LDS kümesini tanımlama
Aşağıdaki sözdizimi, LDS kümesi oluştururken hangi parametreleri kullanabileceğimizi gösterir. Parametre açıklaması VSAM - Küme modülünde belirtilenle aynı kalır.
DEFINE CLUSTER (NAME(lds-file-name) -
BLOCKS(number) -
VOLUMES(volume-serial) -
LINEAR -
CISZ(number) -
[READPW(password)] -
[FOR(days)|TO(date)] -
[UPDATEPW(password)] -
[REUSE / NOREUSE]) -
DATA -
(NAME(lds-file-name.data))
Misal
Aşağıdaki örnek, IDCAMS yardımcı programını kullanarak JCL'de bir LDS kümesinin nasıl oluşturulacağını göstermektedir -
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = IDCAMS
//SYSPRINT DD SYSOUT = *
//SYSIN DD *
DEFINE CLUSTER (NAME(MY.VSAM.LDSFILE) -
LINEAR -
TRACKS(1,1) -
CISZ(4096) ) -
DATA (NAME(MY.VSAM.LDSFILE.DATA))
/*
Yukarıdaki JCL'yi Mainframes sunucusunda çalıştıracaksanız. MAXCC = 0 ile çalışmalı ve MY.VSAM.LDSFILE VSAM dosyasını oluşturacaktır.
LDS Kümesini Silme
LDS kümesi IDCAMS yardımcı programı kullanılarak silinir. DELETE komutu, VSAM kümesinin girişini katalogdan kaldırır ve isteğe bağlı olarak dosyayı kaldırır, böylece nesnenin kapladığı alanı serbest bırakır.
DELETE data-set-name CLUSTER
[ERASE / NOERASE]
[FORCE / NOFORCE]
[PURGE / NOPURGE]
[SCRATCH / NOSCRATCH]
Yukarıdaki sözdizimi, LDS kümesini silerken hangi parametreleri kullanabileceğimizi gösterir. Parametre açıklaması VSAM - Küme modülünde belirtilenle aynı kalır.
Misal
Aşağıdaki örnek, IDCAMS yardımcı programını kullanarak JCL'de bir LDS kümesinin nasıl silineceğini gösterir -
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEPNAME EXEC PGM = IDCAMS
//SYSPRINT DD SYSOUT = *
//SYSIN DD *
DELETE MY.VSAM.LDSFILE CLUSTER
/*
Yukarıdaki JCL'yi Mainframes sunucusunda çalıştıracaksanız. MAXCC = 0 ile çalışmalı ve MY.VSAM.LDSFILE VSAM Kümesini silecektir.
VSAM komutları, VSAM veri kümelerinde belirli işlemleri gerçekleştirmek için kullanılır. Aşağıdakiler en kullanışlı VSAM komutlarıdır -
- Alter
- Repro
- Listcat
- Examine
- Verify
Değiştir
ALTER komutu, VSAM dosya özniteliklerini değiştirmek için kullanılır. VSAM Küme tanımında bahsettiğimiz VSAM dosyasının özniteliklerini değiştirebiliriz. Öznitelikleri değiştirmek için sözdizimi aşağıdadır -
ALTER file-cluster-name [password]
[ADDVOLUMES(volume-serial)]
[BUFFERSPACE(size)]
[EMPTY / NOEMPTY]
[ERASE / NOERASE]
[FREESPACE(CI-percentage CA-percentage)]
[KEYS(length offset)]
[NEWNAME(new-name)]
[RECORDSIZE(average maximum)]
[REMOVEVOLUMES(volume-serial)]
[SCRATCH / NOSCRATCH]
[TO(date) / FOR(days)]
[UPGRADE / NOUPGRADE]
[CATALOG(catalog-name [password]]
Yukarıdaki sözdizimi, mevcut bir VSAM kümesinde hangi parametreleri değiştirebileceğimizi gösterir. Parametre açıklaması VSAM - Küme modülünde belirtilenle aynı kalır.
Misal
Aşağıdaki örnek, Serbest Alanı artırmak, daha fazla hacim eklemek ve Anahtarları Değiştirmek için ALTER komutunun nasıl kullanılacağını gösterir -
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = IDCAMS
//SYSPRINT DD SYSOUT = *
//SYSIN DD *
ALTER MY.VSAM.KSDSFILE
[ADDVOLUMES(2)]
[FREESPACE(6 6)]
[KEYS(10 2)]
/*
Yukarıdaki JCL'yi Mainframes sunucusunda çalıştıracaksanız. MAXCC = 0 ile çalıştırılmalı ve Serbest Alan, Hacim ve Anahtarları değiştirecektir.
Repro
REPRO komutu, verileri VSAM veri kümesine yüklemek için kullanılır. Ayrıca bir VSAM veri kümesinden diğerine veri kopyalamak için kullanılır. Sıralı dosyadan VSAM dosyasına veri kopyalamak için bu komutu kullanabiliriz. IDCAMS yardımcı programı, veri kümelerini yüklemek için REPRO komutunu kullanır.
REPRO INFILE(in-ddname)
OUTFILE(out-ddname)
Yukarıdaki sözdiziminde, ddname, kayıtlara sahip olan Giriş Veri Kümesi için DD adıdır. Dış gg adı, girdi veri kümesi kayıtlarının kopyalanacağı Çıktı Veri Kümesi için DD adıdır.
Misal
Aşağıdaki örnek, kayıtların bir veri kümesinden başka bir VSAM veri kümesine nasıl kopyalanacağını gösterir -
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = IDCAMS
//IN DD DSN = MY.VSAM.KSDSFILE,DISP = SHR
//OUT DD DSN = MY.VSAM1.KSDSFILE,DISP = SHR
//SYSPRINT DD SYSOUT = *
//SYSIN DD *
REPRO INFILE(IN)
OUTFILE(OUT)
/*
Yukarıdaki JCL'yi Mainframes sunucusunda çalıştıracaksanız. MAXCC = 0 ile çalışmalı ve tüm kayıtları MY.VSAM.KSDSFILE'dan MY.VSAM1.KSDSFILE VSAM dosyasına kopyalayacaktır.
Listcat
LISTCAT komutu, bir VSAM veri kümesinin katalog ayrıntılarını almak için kullanılır. Listcat komutu, VSAM veri kümeleri hakkında aşağıdaki bilgileri sağlar -
- SMS Bilgileri
- RLS Bilgileri
- Hacim Bilgileri
- Küre Bilgileri
- Tahsis Bilgileri
- Veri Kümesi Özellikleri
LISTCAT ENTRY(vsam-file-name) ALL
Yukarıdaki sözdiziminde, vsam-dosya-adı, tüm bilgilere ihtiyaç duyduğumuz VSAM veri kümesi adıdır. Tüm katalog detaylarını almak için ALL anahtar sözcüğü belirtilmiştir.
Misal
Aşağıdaki örnek, bir VSAM veri kümesi için Listcat komutunu kullanarak tüm ayrıntıların nasıl getirileceğini gösterir -
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = IDCAMS
//SYSPRINT DD SYSOUT = *
//SYSIN DD *
LISTCAT ENTRY(MY.VSAM.KSDSFILE)
ALL
/*
Yukarıdaki JCL'yi Mainframes sunucusunda çalıştıracaksanız. MAXCC = 0 ile çalışmalı ve MY.VSAM.KSDSFILE veri setiyle ilgili tüm katalog detaylarını gösterecektir.
Muayene etmek
İncele komutu, anahtar sıralı bir veri kümesi kümesinin yapısal bütünlüğünü kontrol etmek için kullanılır. İndeks ve veri bileşenlerini kontrol eder ve herhangi bir sorun bulunursa hata mesajları biriktirilir. IDCxxxxx mesajlarından herhangi birini kontrol edebilirsiniz.
EXAMINE NAME(vsam-ksds-name) -
INDEXTEST DATATEST -
ERRORLIMIT(50)
Yukarıdaki sözdiziminde, vsam-ksds-adı, VSAM kümesinin dizin ve veri bölümünü incelememiz gereken VSAM veri kümesi adıdır.
Misal
Aşağıdaki örnek, KSDS veri kümesinin Dizin ve Veri bölümlerinin senkronize edilip edilmediğinin nasıl kontrol edileceğini gösterir -
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = IDCAMS
//SYSPRINT DD SYSOUT = *
//SYSIN DD *
EXAMINE NAME(MY.VSAM.KSDSFILE) -
INDEXTEST DATATEST -
ERRORLIMIT(50)
/*
Yukarıdaki JCL'yi Mainframes sunucusunda çalıştıracaksanız. MAXCC = 0 ile çalışmalıdır ve VSAM veri kümesiyle ilgili tüm sorunları, biriktirmedeki IDCxxxxx mesajlarından birinde gösterecektir.
Doğrulayın
Doğrulama komutu, bir hatadan sonra düzgün şekilde kapatılmayan VSAM dosyalarını kontrol etmek ve düzeltmek için kullanılır. Komut, dosyaya doğru Veri Sonu kayıtlarını ekler.
VERIFY DS(vsam-file-name)
Yukarıdaki sözdiziminde, vsam-file-name, hataları kontrol etmemiz gereken VSAM veri kümesi adıdır.
Misal
Aşağıdaki örnek, VSAM veri kümesindeki hataların nasıl kontrol edilip düzeltileceğini gösterir -
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = IDCAMS
//SYSPRINT DD SYSOUT = *
//SYSIN DD *
VERIFY DS(MY.VSAM.KSDSFILE)
/*
Yukarıdaki JCL'yi Mainframes sunucusunda çalıştıracaksanız. MAXCC = 0 ile yürütülmelidir ve VSAM veri kümesindeki hataları düzeltir.
Alternatif indeks, birincil indekslerine ek olarak KSDS / ESDS veri setleri için oluşturulan ek indekstir. Alternatif bir dizin, birden fazla anahtar kullanarak kayıtlara erişim sağlar. Alternatif dizinin anahtarı benzersiz olmayan bir anahtar olabilir, kopyaları olabilir.
Alternatif Dizinin Oluşturulması
Bir Alternatif Dizin oluşturmak için aşağıdaki adımlar kullanılır -
- Alternatif Dizini Tanımla
- Yolu Tanımla
- Bina Endeksi
Alternatif Dizini Tanımla
Alternatif İndeks kullanılarak tanımlanır DEFINE AIX komut.
DEFINE AIX -
(NAME(alternate-index-name) -
RELATE(vsam-file-name) -
CISZ(number) -
FREESPACE(CI-Percentage,CA-Percentage) -
KEYS(length offset) -
NONUNIQUEKEY / UNIQUEKEY -
UPGRADE / NOUPGRADE -
RECORDSIZE(average maximum)) -
DATA -
(NAME(vsam-file-name.data)) -
INDEX -
(NAME(vsam-file-name.index))
Yukarıdaki sözdizimi, Alternatif İndeks tanımlanırken kullanılan parametreleri göstermektedir. Define Cluster Module'de bazı parametreleri daha önce tartıştık ve burada tartışacağımız Alternatif İndeksi tanımlamada bazı yeni parametreler kullanıldı -
Sr.No | Açıklamalı Parametreler |
---|---|
1 | DEFINE AIX Define AIX komutu, Alternatif Dizini tanımlamak ve bileşenleri için parametre niteliklerini belirtmek için kullanılır. |
2 | NAME NAME, Alternatif Dizinin adını belirtir. |
3 | RELATE RELATE, kendisi için alternatif dizinin oluşturulduğu VSAM kümesinin adını belirtir. |
4 | NONUNIQUEKEY / UNIQUEKEY UNIQUEKEY, alternatif dizinin benzersiz olduğunu ve NONUNIQUEKEY, yinelemelerin var olabileceğini belirtir. |
5 | UPGRADE / NOUPGRADE UPGRADE, temel küme değiştirilirse alternatif dizinin değiştirilmesi gerektiğini belirtir ve NOUPGRADE, temel küme değiştirilirse alternatif dizinlerin tek başına bırakılması gerektiğini belirtir. |
Misal
Aşağıda, JCL'de bir Alternatif Dizinin nasıl tanımlanacağını gösteren temel bir örnek verilmiştir -
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = IDCAMS
//SYSPRINT DD SYSOUT = *
//SYSIN DD *
DEFINE AIX (NAME(MY.VSAM.KSDSAIX) -
RELATE(MY.VSAM.KSDSFILE) -
CISZ(4096) -
FREESPACE(20,20) -
KEYS(20,7) -
NONUNIQUEKEY -
UPGRADE -
RECORDSIZE(80,80)) -
DATA(NAME(MY.VSAM.KSDSAIX.DATA)) -
INDEX(NAME(MY.VSAM.KSDSAIX.INDEX))
/*
Yukarıdaki JCL'yi Mainframes sunucusunda çalıştıracaksanız. MAXCC = 0 ile çalışmalı ve MY.VSAM.KSDSAIX Alternate Index oluşturacaktır.
Yolu Tanımla
Yolu Tanımla, alternatif dizini temel kümeyle ilişkilendirmek için kullanılır. Yolu tanımlarken, yolun adını ve bu yolun ilişkili olduğu alternatif dizini belirtiyoruz.
DEFINE PATH -
NAME(alternate-index-path-name) -
PATHENTRY(alternate-index-name))
Yukarıdaki sözdiziminin iki parametresi vardır. AD, Alternatif Dizin Yolu Adını belirtmek için kullanılır ve YOLDA, Alternatif Dizin Adını belirlemek için kullanılır.
Misal
Aşağıda, JCL'de Yolu tanımlamak için temel bir örnek verilmiştir -
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = IDCAMS
//SYSPRINT DD SYSOUT = *
//SYSIN DD *
DEFINE PATH -
NAME(MY.VSAM.KSDSAIX.PATH) -
PATHENTRY(MY.VSAM.KSDSAIX))
/*
Yukarıdaki JCL'yi Mainframes sunucusunda çalıştıracaksanız. MAXCC = 0 ile çalışmalı ve Alternatif İndeks ile temel kümeye arasında yol oluşturacaktır.
Bina Endeksi
BLDINDEX komutu, alternatif dizini oluşturmak için kullanılır. BLDINDEX, VSAM endeksli veri kümesindeki (veya temel kümedeki) tüm kayıtları okur ve alternatif dizini oluşturmak için gereken verileri çıkarır.
BLDINDEX -
INDATASET(vsam-cluster-name) -
OUTDATASET(alternate-index-name))
Yukarıdaki sözdiziminin iki parametresi vardır. INDATASET, VSAM Küme Adını belirtmek için kullanılır ve OUTDATASET, Alternatif Dizin Adını belirtmek için kullanılır.
Misal
Aşağıda, JCL'de Dizin Oluşturmaya yönelik temel bir örnek verilmiştir -
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = IDCAMS
//SYSPRINT DD SYSOUT = *
//SYSIN DD *
BLDINDEX -
INDATASET(MY.VSAM.KSDSFILE) -
OUTDATASET(MY.VSAM.KSDSAIX))
/*
Yukarıdaki JCL'yi Mainframes sunucusunda çalıştıracaksanız. MAXCC = 0 ile çalışmalı ve indeksi oluşturacaktır.
Katalog, veri kümesinin bulunduğu birimi ve hacmi korur. Katalog, veri setlerinin alınması için kullanılır. VSAM olmayan veri kümeleri, JCL'deki Disposition Parametresi aracılığıyla bir katalog girişi oluşturur. VSAM veri kümeleri, KSDS kümesi biçiminde kendi kataloğunu korur. Aşağıdaki resimde VSAM kataloglarının türünü görebilirsiniz -
Ana Katalog
Ana kataloğun kendisi, VSAM işlemlerini izleyen ve yöneten bir dosyadır. Sistem veri kümeleri ve VSAM veri kümeleri hakkındaki girişleri içeren herhangi bir sistemde yalnızca bir ana katalogdur. VSAM ve VSAM olmayan veri kümelerinin ana katalogda girişi olabilir, ancak bu iyi bir uygulama değildir. Ana katalog, sistem oluşturma işlemi sırasında oluşturulur ve sistem biriminde bulunur. Ana katalog, işletim sistemindeki tüm VSAM kaynaklarına sahiptir. VSAM'da kullanılan tüm dosyalar ana katalog tarafından kontrol edilir. Ana katalog aşağıdaki işlemlerden sorumludur -
- Dosyalar için Şifre Yetkilendirmesi
- Güvenliği Artırmak
- Dosyalar için VSAM erişimi
- Dosyanın Alan Yönetimi
- Dosyanın konumu
- Dosyada mevcut boş alan
Yukarıdaki dosya özniteliklerinden herhangi biri değiştiğinde, ana katalogda otomatik olarak güncellenirler. Ana katalog, IDCAMS programları kullanılarak tanımlanır.
Kullanıcı Kataloğu
Kullanıcı kataloğu, ana katalog ile aynı yapı ve kavramlara sahiptir. Ana katalogdan sonraki hiyerarşi düzeyinde mevcuttur. Kullanıcı kataloğu sistemde zorunlu değildir ancak VSAM sisteminin güvenliğini artırmak için kullanılır. Ana katalog VSAM dosyalarına işaret eder, ancak Kullanıcı kataloğu varsa, ana katalog kullanıcı kataloğunu gösterir. Kullanıcı katalogları, sistem gereksinimine göre çok sayıda olabilir. VSAM yapısında ana katalog kaldırılırsa kullanıcı kataloğunu etkilemeyecektir. Kullanıcı kataloğu, uygulamaya özel veri kümeleri hakkında girişler içerir. Kullanıcı kataloğunun bilgileri ana katalogda saklanır.
Veri Alanı
Veri alanı, doğrudan erişim depolama aygıtının yalnızca VSAM kullanımı için ayrılmış bir alanıdır. VSAM kümeleri oluşturmadan önce veri alanı oluşturulmalıdır. Veri alanının kapladığı alan, Hacim İçindekiler Tablosuna (VTOC) kaydedilir, böylece alan, VSAM veya VSAM olmayan başka herhangi bir kullanıma tahsis edilemeyecektir. VTOC, uzay tarafından işgal edilen alana giriş yaptı. VSAM, kullanıcı kataloğu girişlerini tutmak için bir veri alanı oluşturur. VSAM, bu alanın kontrolünü ele alır ve bu alanı VSAM dosyalarının gerektirdiği şekilde izler ve korur.
Benzersiz Kümeler
Benzersiz Kümeler, tamamen kendi içinde oluşturulan küme tarafından kullanılan ayrı bir veri alanından oluşur. Doğrudan erişim depolamasında ayrılmamış alandan benzersiz kümeler oluşturulur.
Alt Ayrılan Kümeler
Alt olarak ayrılmış bir VSAM dosyası, VSAM alanını diğer alt ayrılmış dosyalarla paylaşır. Dosyanın mevcut VSAM alanı içinde alt tahsis edilmesi gerektiğini belirtir. Alt tahsis, VSAM alanlarının daha kolay yönetimi ve kontrolü için kullanılır.
VSAM olmayan veri kümeleri
VSAM olmayan veri kümeleri hem bantta hem de doğrudan erişimli depolamada bulunur. VSAM olmayan veri kümelerinin hem ana katalog hem de kullanıcı kataloglarında girişleri olabilir. VSAM dışı veri kümelerini kataloglamanın ana işlevi, birim ve birim seri bilgilerini saklamaktır.
VSAM veri kümeleriyle çalışırken abendlerle karşılaşabilirsiniz. Aşağıda, sorunları çözmenize yardımcı olacak ortak dosya durum kodları ve açıklamaları verilmiştir -
Kod | Açıklama |
---|---|
00 | operasyon başarıyla tamamlandı |
02 | Benzersiz Olmayan Alternatif Dizin yinelenen anahtar bulundu |
04 | Geçersiz sabit uzunlukta kayıt |
05 | OPEN gerçekleştirilirken Dosya ve dosya mevcut değil |
10 | Karşılaşılan Dosyanın Sonu |
14 | Dosya sınırı dışında göreli bir kaydı OKUMA girişiminde bulunuldu |
20 | VSAM KSDS veya RRDS için Geçersiz Anahtar |
21 | REWRITE üzerinde WRITE yapılırken veya anahtarı değiştirirken sıra hatası |
22 | Birincil yinelenen Anahtar bulundu |
23 | Kayıt bulunamadı veya Dosya bulunamadı |
24 | Dosyanın sınırları dışındaki anahtar |
30 | Kalıcı G / Ç Hatası |
34 | Dosya sınırı dışında kayıt yapın |
35 | OPEN gerçekleştirilirken Dosya ve dosya mevcut değil |
37 | Dosyayı yanlış modda aç |
38 | Kilitli bir dosyayı açmaya çalıştı |
39 | Çakışan dosya öznitelikleri nedeniyle OPEN başarısız oldu |
41 | Zaten açık olan bir dosyayı AÇMAYA çalıştı |
42 | AÇIK olmayan bir dosyayı KAPATMAYA çalıştı |
43 | Önce bir kaydı OKUMADAN YENİDEN YAZMAYA çalıştı |
44 | Farklı uzunluktaki bir kaydı YENİDEN YAZMAYA çalıştı |
46 | Dosya Sonunun ötesinde OKUMAYA çalıştı |
47 | IO veya INPUT açılmamış bir dosyadan OKUMA denendi |
48 | IO veya OUTPUT açılmamış bir dosyaya YAZMAYA çalıştı |
49 | IO açılmamış bir dosyaya SİLMEYİ veya YENİDEN YAZMAYI çalıştı |
91 | Parola veya yetkilendirme başarısız oldu |
92 | Mantık Hatası |
93 | Kaynaklar mevcut değil |
94 | Sıralı kayıt mevcut değil veya eşzamanlı AÇMA hatası |
95 | Dosya Bilgileri geçersiz veya eksik |
96 | Dosya için DD beyanı yok |
97 | OPEN başarılı ve dosya bütünlüğü doğrulandı |
98 | Dosya Kilitli - AÇILamadı |
99 | Kayıt Kilitli - Kayıt erişimi başarısız oldu |