IMS DB - Veri Erişimi
IMS DL / I çağrılarında kullanılan çeşitli veri alma yöntemleri aşağıdaki gibidir -
- GU Çağrısı
- GN Çağrısı
- Komut Kodlarını Kullanma
- Çoklu İşlem
Veri alma işlevi çağrılarını anlamak için aşağıdaki IMS veritabanı yapısını düşünelim -
GU Çağrısı
GU çağrısının temelleri aşağıdaki gibidir -
GU araması, Get Unique araması olarak bilinir. Rastgele işleme için kullanılır.
Bir uygulama veritabanını düzenli olarak güncellemiyorsa veya veritabanı güncelleme sayısı daha azsa, rastgele işlemeyi kullanırız.
GU çağrısı, daha fazla sıralı erişim için işaretçiyi belirli bir konuma yerleştirmek için kullanılır.
GU çağrıları, önceki çağrıların oluşturduğu işaretçi konumundan bağımsızdır.
GU araması işleme, arama ifadesinde sağlanan benzersiz anahtar alanlarına dayanır.
Benzersiz olmayan bir anahtar alan sağlarsak, DL / I anahtar alanın ilk segment oluşumunu döndürür.
CALL 'CBLTDLI' USING DLI-GU
PCB-NAME
IO-AREA
LIBRARY-SSA
BOOKS-SSA
ENGINEERING-SSA
IT-SSA
Yukarıdaki örnek, eksiksiz bir nitelikli SSA seti sağlayarak bir GU çağrısı yaptığımızı göstermektedir. Kök seviyeden başlayarak almak istediğimiz segment oluşumuna kadar tüm anahtar alanları içerir.
GU Çağrı Konuları
Çağrıda nitelikli SSA'ların tamamını sağlamazsak, DL / I şu şekilde çalışır -
Bir GU çağrısında niteliksiz bir SSA kullandığımızda, DL / I, veritabanında belirlediğiniz kriterleri karşılayan ilk segment oluşumuna erişir.
Herhangi bir SSA'sız bir GU çağrısı yaptığımızda, DL / I, veritabanındaki kök segmentin ilk oluşumunu döndürür.
Ara seviyelerdeki bazı SSA'lar çağrıda belirtilmezse, DL / I segment için ya yerleşik konumu ya da niteliksiz bir SSA'nın varsayılan değerini kullanır.
Durum Kodları
Aşağıdaki tablo, bir GU aramasından sonra ilgili durum kodlarını göstermektedir -
S.No | Durum Kodu ve Açıklama |
---|---|
1 | Spaces Başarılı çağrı |
2 | GE DL / I, aramada belirtilen kriterleri karşılayan bir segment bulamadım |
GN Çağrısı
GN çağrısının temelleri aşağıdaki gibidir -
GN çağrısı Get Next çağrısı olarak bilinir. Temel ardışık işlemler için kullanılır.
İşaretçinin veritabanındaki ilk konumu, ilk veritabanı kaydının kök segmentinden öncedir.
Veritabanı işaretçisi konumu, başarılı bir GN çağrısından sonra, sıradaki bir sonraki segment oluşumundan öncedir.
GN çağrısı, önceki çağrı tarafından oluşturulan konumdan veritabanı üzerinden başlar.
Bir GN çağrısı nitelenmemişse, türüne bakılmaksızın veritabanındaki sonraki segment oluşumunu hiyerarşik sırayla döndürür.
Bir GN çağrısı SSA'lar içeriyorsa, DL / I yalnızca belirtilen tüm SSA'ların gereksinimlerini karşılayan segmentleri alır.
CALL 'CBLTDLI' USING DLI-GN
PCB-NAME
IO-AREA
BOOKS-SSA
Yukarıdaki örnek, kayıtları sıralı olarak okumak için başlangıç konumunu sağlayan bir GN çağrısı yaptığımızı göstermektedir. KİTAPLAR bölümünün ilk geçtiği yeri getirir.
Durum Kodları
Aşağıdaki tablo, bir GN çağrısından sonra ilgili durum kodlarını göstermektedir -
S.No | Durum Kodu ve Açıklama |
---|---|
1 | Spaces Başarılı çağrı |
2 | GE DL / I, çağrıda belirtilen kriterleri karşılayan bir segment bulamadı. |
3 | GA Niteliksiz bir GN çağrısı, segmenti getirmek için veritabanı hiyerarşisinde bir seviye yukarı çıkar. |
4 | GB Veritabanının sonuna ulaşıldı ve segment bulunamadı. |
GK Niteliksiz bir GN çağrısı, yeni getirilenin dışında belirli bir türdeki bir segmenti getirmeye çalışır, ancak aynı hiyerarşik seviyede kalır. |
Komut Kodları
Komut kodları, bir segment oluşumunu getirmek için çağrılarla kullanılır. Çağrılar ile kullanılan çeşitli komut kodları aşağıda tartışılmıştır.
F Komut Kodu
Dikkat edilecek noktalar -
Bir çağrıda bir F komut kodu belirtildiğinde, çağrı segmentin ilk oluşumunu işler.
Sıralı olarak işlemek istediğimizde F komut kodları kullanılabilir ve GN çağrıları ve GNP çağrıları ile kullanılabilir.
Bir GU çağrısı ile bir F komut kodu belirtirsek, GU çağrıları varsayılan olarak ilk segment oluşumunu getireceğinden, herhangi bir önemi yoktur.
L Komut Kodu
Dikkat edilecek noktalar -
Bir çağrıda bir L komut kodu belirtildiğinde, çağrı segmentin son oluşumunu işler.
Sıralı olarak işlemek istediğimizde L komut kodları kullanılabilir ve GN çağrıları ve GNP çağrıları ile kullanılabilir.
D Komut Kodu
Dikkat edilecek noktalar -
D komut kodu, yalnızca tek bir çağrı kullanarak birden fazla segment oluşumunu getirmek için kullanılır.
Normalde DL / I, bir SSA'da belirtilen en düşük seviye segmentinde çalışır, ancak çoğu durumda diğer seviyelerden de veri isteriz. Bu durumlarda D komut kodunu kullanabiliriz.
D komut kodu, tüm segment yolunun kolayca alınmasını sağlar.
C Komut Kodu
Dikkat edilecek noktalar -
C komut kodu, anahtarları birleştirmek için kullanılır.
Bir alan adı, ilişkisel bir operatör ve bir arama değeri belirtmemiz gerektiğinden ilişkisel operatörleri kullanmak biraz karmaşıktır. Bunun yerine, birleştirilmiş bir anahtar sağlamak için bir C komut kodu kullanabiliriz.
Aşağıdaki örnek, C komut kodunun kullanımını gösterir -
01 LOCATION-SSA.
05 FILLER PIC X(11) VALUE ‘INLOCSEG*C(‘.
05 LIBRARY-SSA PIC X(5).
05 BOOKS-SSA PIC X(4).
05 ENGINEERING-SSA PIC X(6).
05 IT-SSA PIC X(3)
05 FILLER PIC X VALUE ‘)’.
CALL 'CBLTDLI' USING DLI-GU
PCB-NAME
IO-AREA
LOCATION-SSA
P Komut Kodu
Dikkat edilecek noktalar -
Bir GU veya GN çağrısı yaptığımızda, DL / I ebeveynini alınan en düşük seviye segmentte kurar.
Bir P komut kodunu dahil edersek, DL / I kendi ebeveynini hiyerarşik yolda daha yüksek bir segmentte kurar.
U Komut Kodu
Dikkat edilecek noktalar -
Bir GN çağrısında niteliksiz bir SSA'da bir U komut kodu belirtildiğinde, DL / I segment için aramayı kısıtlar.
Nitelikli bir SSA ile kullanılırsa, U komut kodu yok sayılır.
V Komut Kodu
Dikkat edilecek noktalar -
V komut kodu, U komut koduna benzer şekilde çalışır, ancak belirli bir seviyede ve hiyerarşinin üzerindeki tüm seviyelerde bir segmentin aranmasını kısıtlar.
Nitelikli bir SSA ile kullanıldığında V komut kodu yok sayılır.
Q Komut Kodu
Dikkat edilecek noktalar -
Q komut kodu, uygulama programınızın özel kullanımı için bir segmenti kuyruğa almak veya ayırmak için kullanılır.
Q komut kodu, başka bir programın bir segmentte değişiklik yapabileceği etkileşimli bir ortamda kullanılır.
Çoklu İşlem
Bir program, çoklu işleme olarak bilinen IMS veritabanında birden çok konuma sahip olabilir. Birden çok işlem iki şekilde yapılabilir -
- Çoklu PCB'ler
- Çoklu Konumlandırma
Çoklu PCB'ler
Tek bir veritabanı için birden fazla PCB tanımlanabilir. Birden fazla PCB varsa, bir uygulama programı onun farklı görünümlerine sahip olabilir. Çoklu işlemeyi uygulamaya yönelik bu yöntem, ekstra PCB'lerin empoze ettiği genel giderler nedeniyle verimsizdir.
Çoklu Konumlandırma
Bir program, tek bir PCB kullanarak bir veritabanında birden çok konumu koruyabilir. Bu, her hiyerarşik yol için ayrı bir konum korunarak elde edilir. Aynı anda iki veya daha fazla tipteki segmentlere sırayla erişmek için çoklu konumlandırma kullanılır.