English  

كتب code example

اذا لم تجد ما تبحث عنه يمكنك استخدام كلمات أكثر دقة.

عرض المزيد

مثال للشفرة (معلومة)


البرنامج التالي يستقبل رقم العميل كمعيار للمدخلات ويقوم بإرجاع الاسم والعنوان كمعيار للنواتج.

* على مر التاريخ فإن آر بي جي كانت لغة عمودية بطبيعتها، برغم أنها ذات نسق وصياغات حرة * مسموح بها تحت ظروف معينة. * الغرض من تعدد الشفرة في السطور يحدده * شفرة حرفية في العمود رقم 6. * ورمز النجمة (*) في العمود السابع يشير إلى سطر تعليقي * مواصفات "F" (ملف) تحدد الملفات وأجهزة i/o الأخرى F ARMstF1 IF E K Disk Rename(ARMST:RARMST) * مواصفات "D" تستخدم في تحديد المتغيرات D pCusNo S 6p 0 D pName S 30a D pAddr1 S 30a D pAddr2 S 30a D pCity S 25a D pState S 2a D pZip S 10a * مواصفات "c" (الحساب) تستخدم للعبارات القابلة للتنفيذ * يتم تحديد المعايير باستخدام plist وparm opcodes C *entry plist C parm pCusNo C parm pName C parm pAddr1 C parm pAddr2 C parm pCity C parm pState C parm pZip * أما أمر "chain" فيستخدم من أجل الوصول العشوائي إلى ملف ذو شفرة C pCusNo chain ARMstF1 * وإذا ما استدل على وجود تدوين ما، انقل الحقول من الملف إلى معايير C if %found C eval pName = ARNm01 C eval pAddr1 = ARAd01 C eval pAddr2 = ARAd02 C eval pCity = ARCy01 C eval pState = ARSt01 C eval pZip = ARZp15 C endif * تستعين لغة آر بي جي بالتحولات "switches". تحول واحد "LR" عادة يرمز إلى "آخر تدوين last record" * LR في الواقع تحدد البرنامج ومساحة بياناته بحيث تكون قابلة للإزالة من الذاكرة. C eval *InLR = *On

يستعين نفس البرنامج بحسابات حرة:

* مواصفات "F" (الملف) تحدد الملفات وأدوات i/o الأخرى FARMstF1 IF E K Disk Rename(ARMST:RARMST) * مواصفات "D" تستخدم في تحديد المتغيرات والمعايير * "النموذج الأصلي prototype" للبرنامج موجود بملف مستقل * بحيث يسمح للبرامج الأخرى باستدعائه /copy cust_pr * يصف "السطح البيني للإجراء" معايير المُدخل D getCustInf PI D pCusNo 6p 0 const D pName 30a D pAddr1 30a D pAddr2 30a D pCity 25a D pState 2a D pZip 10a /free // أمر "chain" يستخدم من أجل الوصول العشوائي للملفات المُشفرة chain pCusNo ARMstF1; // إذا ما استدل على وجود تدوين، انقل الملفات إلى معايير if %found; pName = ARNm01; pAddr1 = ARAd01; pAddr2 = ARAd02; pCity = ARCy01; pState = ARSt01; pZip = ARZp15; endif; // تستعين لغة آر بي جي بالتحولات "switches". تحول واحد "LR" عادة يرمز إلى "آخر تدوين last record" // LR في الواقع تحدد البرنامج ومساحة بياناته بحيث تكون قابلة للإزالة من الذاكرة. *InLR = *On; /end-free

يستعين نفس البرنامج بحسابات حرة: وSQL مدرج

* لا تحتاج لغة آر بي جي فور مرة أخرى الاستعانة بمؤشر *INLR لإنهاء البرنامج. *باستخدام الكلمة الرئيسية الأساسية في العنوان "H"، وتحديد "main" * أو اسم إجراء المُدخل، سيبدأ البرنامج وينتهي بشكل معتاد باستخدام * دورة آر بي جي القديمة منذ عقود وبالتالي سيبدأ البرنامج بشكل أشبه كثيرا بالسي وينتهي منطقيا. H MAIN("GETCUSTINF") * مواصفات "D" تستخدم في تحديد المتغيرات والمعايير * "النموذج الأصلي prototype" للبرنامج موجود بملف مستقل * بحيث يسمح للبرامج الأخرى باستدعائه /copy cust_pr * يصف "السطح البيني للإجراء" معايير المُدخل D getCustInf PI D pCusNo 6p 0 const D pName 30a D pAddr1 30a D pAddr2 30a D pCity 25a D pState 2a D pZip 10a /free exec sql select ARNm01, ARAd01, ARAd02, ARCy01, ARSt01, ARZp15 into :pName, :pAddr1, :pAddr2, :pCity, :pState, :pZip from ARMstF1 where ARNo01 = :pCusNo for fetch only fetch first 1 row only optimize for 1 row with CS; /end-free

  • يصف "السطح البيني للإجراء" معايير المُدخل *

D getCustInf PI

D pCusNo 6p 0 const

D pName 30a

D pAddr1 30a

D pAddr2 30a

D pCity 25a

D pState 2a

D pZip 10a

/free

exec sql select ARNm01, ARAd01, ARAd02, ARCy01, ARSt01, ARZp15

into :pName, :pAddr1, :pAddr2, :pCity, :pState, :pZip

from ARMstF1

where ARNo01 = :pCusNo

for fetch only

fetch first 1 row only

optimize for 1 row

with CS;

/end-free

لنفترض أن نموذج الجدول ARMSTF1 صنع باستخدام عبارة SQL التالية:

create table armstf1 (arcnum decimal(7,0), arname char(30), aradd1 char(30), aradd2 char(30), arcity char(25), arstte char(2), arzip char(10))

وبالنسبة لنظام تشغيل V7R1، فإن البرنامج السابق يمكن كتابته (بشكل صحيح وكامل) كالآتي:

H main(GetCustInf) D ARMSTF1 E DS P GetCustInf B D GetCustInf PI extpgm("CUS001") D inCusNo like(arCNum) const D outName like(arName) D outAddr1 like(arAdd1) D outAddr2 like(arAdd2) D outCity like(arCity) D outState like(arStte) D outZip like(arZip) /free exec sql select arName, arAdd1, arAdd2, arCity, arStte, arZip into :outName, :outAddr1, :outAddr2, :outCity, :outState, :outZip from ARMSTF1 where arCNum = :inCusNo fetch first 1 row only with CS use currently committed; /end-free P GetCustInf E

المصدر: wikipedia.org