هل هناك طريقة للوصول إلى SQL Server من z / OS Mainframe والحصول على النتيجة في مضاهاة IBM 3270 الطرفية؟

StackOverflow https://stackoverflow.com/questions/2220191

سؤال

هل هناك أي طريقة (ربما رخيصة) للوصول إلى Microsoft SQL Server من Z / OS MainFrame (برامج COBOL) ولديها النتيجة في مضاهاة 3270 المحطة؟
أنا أدرك أن 3270 هو نظام قديم جميل، ولكن في البنك يعزز، لا يزال شائعا جدا.

هل كانت مفيدة؟

المحلول

ذلك يعتمد على ما تحاول فعلا القيام به. قرطتي لسؤالك هو أنك تريد الحصول على عملية قائمة على المركزية القائمة على قاعدة بيانات SQL Server، ثم قم بعمل شيء به النتيجة، وربما تتضمن محطة 3270.

إذا كنت تستطيع استخدام خدمات نظام UNIX، فيمكنك ترجمة مكتبة TDS freetds. ثم استخدم برنامج C للقيام بما تريد بهذه النتيجة. إذا كنت ترغب في الحصول على مزيد من المجمع، يمكنك تشغيل الاتصال من بيئة Z / OS الأصلية من خلال تجميع التعليمات البرمجية باستخدام IBM C، SAS C أو Dignus C / C ++. وبعد يمكنني أن أوصى Dignus واستخدمتها لبناء التعليمات البرمجية التي تتفاعل مع لغات أخرى على Z / OS. تحتوي رؤوس Dignus وكتابة وقت التشغيل (من الذاكرة) بعض النسب FreeBSD والتي تساعد على تبسيط المنطور.

باستخدام هذا النهج يمكنك الحصول على وحدة نمطية يمكنك الاتصال بها من بعض الجزء الآخر من نظامك للقيام بالعمل، يمكنك ربط التعليمات البرمجية بأجزاء أخرى من نظامك، أو يمكنك فقط تقديم وظيفة واحصل على الإخراج.

إذا كنت ترغب في استخدام Java، يمكنك استخدام شيء مثل jtds. واكتب رمز جافا للقيام بما تحتاجه. لم أستخدم Java على z / OS، لذلك لا يمكنني تقديم نصائح محددة هناك، لكنني استخدمت JTDS على منصات أخرى ولقد سعيدا بالنتيجة.

تحديث:

يمكنك تصدير وظيفة ج كدخول نقطة إدخال إلى وحدة تحميل ثم استدعاء ذلك من COBOL. يحتاج تنفيذ C / C ++ إلى التعامل مع هياكل بيانات COBOL؛ إنها محددة جيدا ويمكن التنبؤ بها حتى لا تكون مشكلة. اعتمادا على مدى مرونة تحتاج إلى أشياء يجب أن تكون فيها، يمكنك ترجمة الاستعلام في رمز C ولديها مجرد وظيفة تنفذ استعلام محدد مسبقا وكانت واجهة لاسترداد النتيجة، أو يمكن أن يكون لديك شيء أكثر تعقيدا حيث تم توفير الاستعلام من برنامج COBOL.

لقد استخدمت هذا النهج لتوفير وظائف API إلى مطوري Adabas / الطبيعي وعملوا بشكل جيد. يحتوي برنامج التحويل البرمجي Dignus على آلية للمتصلين بتوفير مقبض لمكتبة وقت التشغيل حتى تتمكن من إدارة عمر بيئة وقت التشغيل C من برنامج الاتصال.

للحصول على مطور C / C ++، يجب أن يكون ذلك واضحا إلى حد ما. إذا كان مطوروك جميع مطوري COBOL، فقد تكون الأمور أكثر صعبة بعض الشيء.

طريقة البوابة ممكنة، وأنا متأكد من وجود منتجات البوابة حولها، لكنني لا أستطيع أن أوصي واحدة. لقد رأيت الكربية التي لن أوصي بها، لكن هذا لا يعني أنه ليس هناك مكان جيد في مكان ما.

للكمال، سأذكر إمكانية تنفيذ بروتوكول TDS في COBOL. يبدو وكأنه عقوبة قاسية ومعناية، رغم ذلك.

نصائح أخرى

إذا كان لديك 3270 مضاهاة الطرف، ما هي المحطات التي تستخدمها؟ الكمبيوتر الشخصي

يستخدم أحد الاختراق المثيرة للاهتمام جهاز توجيه Cisco للقيام به في التحويل الفانيليا 3270 إلى Vanilla TCP، ثم كتابة وكيل TCP بسيط لإجراءات SQL Server الخاصة بك

ليس على هذا النحو - يقوم 3270 المحفوظون بالاتصال بالإطار الرئيسي IBM. من أجل الحصول على بيانات من قاعدة بيانات SQL Server على المركزية، سيتعين عليك كتابة برنامج يعمل على المركزية التي يقرأ البيانات من SQL Server DB. هذا سيتطلب منك أن يكون لديك برنامج سائق يعمل على المركزية. قد تكون قادرا على العثور على طرف ثالث يجعل هذا النوع من الأشياء، ولكن من المحتمل أن تكون مكلفة للغاية.

إذا كنت بحاجة إلى إيصال تقرير أو شيء يجمع بين البيانات من نظام مركزي مع مصادر بيانات خارجية قد يكون من الأسهل الحصول على البيانات حول الإطار الرئيسي وقم بالتكامل في مكان آخر - ربما نوعا من البيانات.

سيكون بديلا لاستخراج بيانات THD التي تريدها من قاعدة بيانات SQL Server وتحميله إلى المركزية كملف مسطح للمعالجة هناك.

إليك الاحتمالات إذا كنت تكتب برامج COBOL التي تعمل في CICS.

أولا، لف إجراء مخزن قاعدة بيانات SQL Server الخاص بك مع مجمع خدمة الويب. انظر إلى Devx.com المادة 28577 لمثال.

بعد ذلك، اتصل بخدمة الويب الخاصة ب SQL Server الجديدة باستخدام مكالمة خدمة الويب CICS.

استخدم آخر أوامر CICS BMS القياسية لتقديم البيانات إلى المستخدم.

تطوير التطبيقات ل CICS Web Services

ما عليك سوى الحصول على برنامج تشغيل JDBC للوصول إلى خادم MS-SQL. يمكنك بعد ذلك فئة الفئة الفرعية وتستخدمها في برنامج COBOL الخاص بك والوصول إلى قاعدة البيانات كما لو كنت تستخدمها من Java.

بمجرد الحصول على نتائجك، يمكنك تقديمها عبر وظائف BMS العادية.

لا توجد خارقة قذرة أو حيل شبكات الهوى اللازمة. مع IBM Enterprise Cobol، يمكنك حقا إنشاء فئة Java واستخدامها كما تريد في مساحة Java.

قد تكون قادرا على القيام بشيء فعلته في الماضي. لقد كتبت DB2 إلى برامج / وظائف COBOL MS-SQL التي جعل جدول / عرض MS-SQL حدد فقط إلى DB2. يشارك في إنشاء خدمة قيد التشغيل على خادم شبكة يقبل اتصالات TCP / IP فقط من المركزية واستخدام بيانات الاعتماد التي تم تمريرها كمعرف المستخدم / PW المستخدمة للوصول إلى جدول MS-SQL. ثم يصدر تحديدا مقابل الجدول / عرض وأرسل قائمة أسماء الحقول إلى الوراء أولا مع إجمالي عدد الصفوف. ثم ستمر كل صف، كعلامة تحدد علامة التبويب الحقول، والعودة إلى المركزية. سيوفر برنامج COBOL أسماء الحقول في جدول لاستخدامه لتحديد الروتين الذي يجب استخدامه لترجمة كل حقل MS-SQL إلى DB2. من وجهة نظر DB2، يبدو وكأنه وظيفة تقوم بإرجاع الحقول. لدينا حوالي 30 من هذه الجري. اضطررت إلى إنشاء إجراء وصف MS-SQL للمساعدة في إنشاء تحديد الأولي للعقل الميدانية لبرنامج COBOL. واضطر أيضا إنشاء برنامج COBOL لقراءة البيانات الوصف وإنشاء أوامر قسم الربط والإجراءات. برنامج كوبول واحد لكل طاولة / عرض MS-SQL. هنا هو تعريف وظيفة عينة. إنشاء وظيفة
tcl.balancing_recon (varchar (4000))
عائدات
الطاولة(
سحر سحر (6)،
pnoteno varchar (14)،
بونيت شار (3)،
الادعاء ديسمبر (11،2)،
FASB_4110 ديسمبر (11،2)،
fasb_4111 ديسمبر (11،2)،
useramount1 ديسمبر (11،2)،
useramound2 ديسمبر (11،2)،
userfield1 varchar (14)
)
اللغة كوبول
متابعة بعد الفشل
لا تحدد
يقرأ بيانات SQL.
الاسم الخارجي DB2TCL02.
كوليد DB2TCL02.
نمط المعلمة SQL.
دعا المدخلات فارغة
لا عمل خارجي
عدم السماح بالتوازي
ScratchPad 8000.
الحد الآسيوي 100.
البقاء على مقيم نعم
نوع البرنامج الفرعي
بيئة WLM DB2TWLM
الأمن DB2.
dbinfo.
؛ يقترف؛
منح التنفيذ على الوظيفة TCL.Balancing_recon للجمهور؛

لاستدعاء الوظيفة: حدد * من
الجدول (TCL.BAlancing_recon (''
)) ك X؛

يمكنك وضع أي أوامر تصفية MS-SQL بين علامات الاقتباس.

لم يطلب مني تحديث أي بيانات MS-SQL، لذا لم أكن قد قفزت تلك الموجودة بعد. هناك أيضا قاعدة بيانات في DB2 والتي تتبع المعرف / PW والخادم الذي يعمل قيد التشغيل. هذا إذا أصبح الخادم مثقلا مثلا، يمكن دفع التحديد المختلفة إلى خوادم مختلفة. الاستجابة سريعة، حتى بالنسبة للجداول الكبيرة. المهلة هي نفس مهلة 60 الجمود. النقل هو بريمارلي بروتوكول الإنترنت. يرى DB2 Simly البيانات كمرجع جدول خارجي.

كما تذهب الخارقة القذرة، هل فكرت في إنشاء خادم HTTP أو TCP بسيط بإرجاع بيانات .csv من بيانات الجدول التي تحتاجها؟

هذا يعني أن عميلك يحتاج فقط إلى عميل HTTP / TCP بسيط للوصول إلى البيانات بدلا من مكتبة عميل قاعدة البيانات.

في شركتي، نستخدم Java للاتصال بخادم SQL.

و CL اتصل بهذا برنامج Java :)

بسيط جدا...

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top