برنامه نویسی

اصول COBOL: انواع داده ها و متغیرها

انواع داده ها در COBOL

استاندارد COBOL داده ها را بر اساس هدف خود در پنج نوع مجزا طبقه بندی می کند. اینها عبارتند از:

  1. حروف الفبا – در صورت نیاز به شامل حروف (به عنوان مثال ، AZ ، AZ) استفاده می شود. در حالی که ممکن است برای ذخیره نامها ایده آل به نظر برسد ، باید محتاط باشید ، زیرا نام ها می توانند حاوی شخصیت های غیر آلفا باشند. این نوع داده همچنین می تواند شامل فضاها باشد.
  2. مربوط به الفبایی – در صورت نیاز به شامل نامه ها ، اعداد و شخصیت های خاص (به عنوان مثال ، AZ ، 0-9 ، ٪ ، #) استفاده می شود. این نوع معمولاً برای ذخیره نام ، کدهای کوپن یا سایر اطلاعات از نوع مختلط استفاده می شود.
  3. عددی – برای اعداد استفاده می شود (به عنوان مثال ، 0-9). این نوع داده برای عملیات و محاسبات حسابی طراحی شده است و آن را برای برنامه های مالی ، علمی و آماری ضروری می کند.
  4. Alphanumeric ویرایش شده – برای قالب بندی داده های الفبایی برای اهداف نمایش استفاده می شود. این نوع امکان درج کاراکترهای ثابت (به عنوان مثال ، هیفن ها ، بریدگی ها یا فضاها) را به داده های الفبایی امکان پذیر می کند.
  5. عددی ویرایش شده – برای قالب بندی داده های عددی برای اهداف نمایش استفاده می شود. این نوع امکان درج شخصیت های ثابت (به عنوان مثال ، نمادهای ارزی ، کاما یا نقاط اعشاری) را به داده های عددی امکان پذیر می کند.

یادداشتی در مورد انواع داده های ویرایش شده 🤦‍♂

در Alphanumeric ویرایش شده وت عددی ویرایش شده انواع داده ها در ابتدا می توانند کمی مشکل باشند – اما به عبارت ساده ، این روش کبول برای گفتن است: “بیایید این داده ها را فانتزی جلوه دهیم!” آنها برای قالب بندی داده ها برای نمایش طراحی شده اند ، مانند اضافه کردن کاما به اعداد ، نمادهای ارزی یا حتی Hyphens در متن.

متغیرهای COBOL

در کبول ، تمام متغیرها در DATA DIVISION، جایی است که برنامه COBOL شما تمام داده های مورد استفاده خود را تعریف و ذخیره می کند. متغیرهای کبول سلسله مراتبی هستند و از تعداد سطح تشکیل شده اند ، PICTURE (یا PIC) بندها و مقدار پیش فرض اختیاری (بیشتر در مورد این بعداً):

  1. بوها با شماره سطح، به این ترتیب ما تعیین می کنیم که آیا این یک قسمت فردی ، مورد گروهی یا مورد ابتدایی است. بنابراین ، تفاوت ها چیست؟ آنها هستند:
    • 01 نشان می دهد که این یک مورد سطح بالا است. این می تواند مستقل باشد یا شروع یک مورد گروهی. من می خواهم به این نکته اشاره کنم که هر چیزی که از صفر شروع می شود “اوه” و به دنبال آن شماره سطح (به عنوان مثال ، اوه-یک ، اوه دو) تلفظ می شود.
    • 02 – 49 – سطح فرعی را نشان می دهد. اینها در گروه ها برای تجزیه داده ها به تکه های کوچکتر و قابل کنترل تر استفاده می شوند – به یک فکر کنید اعتراض در زبانهای برنامه نویسی مدرن.
    • 66 – این برای آنچه به عنوان Renames شناخته می شود استفاده می شود. من هنوز از این استفاده نکرده ام ، اما به نظر می رسد شبیه به ایجاد یک نمای در SQL است ، به شما امکان می دهد یک دیدگاه جایگزین از همان داده ها ایجاد کنید.
    • 77 – یک مورد مستقل را نشان می دهد که نیازی به بخشی از یک گروه نیست.
    • 88 – بیشتر اوقات برای نام های شرط استفاده می شود. آنها برای خواندن کد شما فوق العاده مفید هستند. نزدیکترین مقایسه ای که می توانم به آن فکر کنم ممکن است یک عناصر در زبان های مدرن باشد. با این حال ، شما واقعاً نمی توانید مانند یک enum به آن دسترسی پیدا کنید (به عنوان مثال ، order-status.new-ترتیب). در عوض ، شما از نام شرط در بیانیه های منطقی استفاده می کنید.
  2. بوها نام متغیر، به نامی که ما برای دسترسی به این مورد بعداً در برنامه استفاده خواهیم کرد ، اشاره دارد. مانند هر زبان برنامه نویسی ، برخی از قوانین دارد. یکی از این موارد برخلاف هر آنچه که در مورد متغیرها فکر می کردم. اکنون به مسیر برگشت ، این قوانین عبارتند از:
    • طول – یک نام متغیر می تواند به اندازه 1 کاراکتر کوتاه باشد (لطفاً این کار را انجام ندهید – برای خوانایی وحشتناک است !!) و تا 30 کاراکتر.
    • شخصیت های مجاز -چیزهای بسیار استاندارد در اینجا ، آنها می توانند شامل حروف (AZ AZ) ، اعداد (0-9) و Hypens (-) باشند.
    • شروع و پایان دادن به شخصیت ها – در کبول می توانند با یک نامه یا یک شماره شروع و پایان دهند. درست است ، یک شماره!. با این حال ، از آنجا که Cobol کاملاً مجنون نیست ، شما نمی توانید نامهای متغیر خود را با هیپن شروع یا پایان دهید. حداقل آنها تصمیم می گیرند که محدودیت هایی را در مورد نام ها قرار دهند.
    • بدون کلمات محفوظ است – این یکی معنی دارد. از کلمات رزرو شده استفاده نکنید (به عنوان مثال ، نمایش ، پذیرش ، حرکت).
  3. بوها بند (یا عکس) بند – یک بند (یا عکس) – این جایی است که انواع جادوی اتفاق می افتد. اینگونه است که ما با استفاده از نمادها (به عنوان مثال ، A ، 9 ، X) نوع ، اندازه و قالب نمایشگر یک متغیر را تعریف می کنیم. قالب بندی در واقع یکی از مرتب ترین ترفندهای کبول است. من نمی توانم به شما بگویم چند بار موهایم را بیرون کشیدم و سعی کردم هنگام نمایش چیزی به نظر برسد. خوب ، کبول بلند کردن سنگین را برای شما انجام می دهد – پس از آن که سر خود را به اطراف خود می پیچید! ما به زودی عمیق تر به این موضوع شیرجه خواهیم کرد.
  4. بوها بند ارزش – اینجاست که می توانید مقدار اولیه را برای متغیر خود تنظیم کنید. همچنین اختیاری است.

یک عکس هزار کلمه ارزش دارد

همانطور که قبلاً ذکر شد ، تصویر بند به شما امکان می دهد ساختار داده های خود را تعریف کرده و آن را به روشی که شما را خوشحال می کند ، قالب بندی کنید. در حالی که ممکن است به کلمه کلیدی کامل مراجعه کنید تصویر در کد قدیمی تر ، بیشتر نمونه هایی که امروز با آنها روبرو خواهید شد از کلمه کلیدی مختصر استفاده می کنند عکسبشر من فکر می کنم واقعاً به ترجیح شخصی یا راهنمای سبک برنامه نویسی شرکت شما کاهش می یابد. گفته می شود ، tl ؛ dr در بند تصویر این است که این یک طرح برای نحوه ظاهر شدن داده های شما است.

اکنون ، مانند هر طرح تصویر بند شامل برخی از نمادهای خاص است که در ابتدا Clance باعث می شود شما “Huh!” بروید. من تمام تلاش خود را می کنم تا آنها را توضیح دهم ، و گرچه در اینجا بیش از آنچه در اینجا ذکر شده است وجود دارد ، من فقط می خواهم به رایج ترین نمادها لمس کنم. با نمادها می توانید از یک شخصیت واحد استفاده کنید و طول آن را بین پرانتز بگویید (به عنوان مثال ، عکس 9 (5)) ، یا قوطی طولانی خود را مانند: PIC 99999بشر من توصیه نمی کنم مسیر طولانی را طی کنید.

نمادهای مشترک

موارد زیر احتمالاً متداول ترین نمادها بر اساس آنچه تاکنون آموخته ام است.

  1. 9 – این نماد کاملاً خود توضیحی است و یک قسمت شماره را نشان می دهد. مثال: PIC 9(5)، یک زمینه عددی 5 رقمی را تعریف می کند.
  2. بوها – این یک میدان الفبایی را تنظیم می کند. مثال: PIC A(10)، یک زمینه عددی 10 رقمی را تعریف می کند.
  3. x – این یک میدان الفبایی را نشان می دهد. مثال: PIC X(10)، یک میدان الفبای 10 رقمی را تعریف می کند.
  4. حرفهای – اینجاست که همه چیز کمی جالب می شود. این یک نقطه اعشاری ضمنی است. مثال: PIC 9(5)V99، یک میدان شماره 7 رقمی با دو مکان اعشاری را تعریف می کند.
  5. حرف – این یک شماره امضا شده را نشان می دهد (به عنوان مثال ، -5.00 ، +5.00). من هنوز از این استفاده نکرده ام.

اختصاص مقادیر به متغیرها

در COBOL ، می توانید مقادیر را با استفاده از متغیرها اختصاص دهید حرکت بیانیه این یکی از متداول ترین راه های اولیه یا به روزرسانی متغیرها در برنامه شماست.

نمونه های عملی

اگر مثل من هستید ، خواندن در مورد چیزی خوب و دلپذیر است ، اما دیدن کد مفیدتر است. گفته می شود ، بیایید به برخی از نمونه های کد شیرجه بزنیم.

مثال 1: اختصاص یک مقدار به یک قسمت عددی

       IDENTIFICATION DIVISION.
       PROGRAM-ID. EXP01.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 SALARY PIC 9(5).
       PROCEDURE DIVISION.
         MOVE 50000 TO SALARY.
         DISPLAY "Salary: " SALARY.
         STOP RUN.
       END PROGRAM EXP01.

حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

خروجی:

Salary: 5000
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

مثال 2: اختصاص یک مقدار به یک زمینه الفبایی

       IDENTIFICATION DIVISION.
       PROGRAM-ID. EXP02.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 EMPLOYEE-NAME PIC X(20).
        PROCEDURE DIVISION.
           MOVE "John Doe" TO EMPLOYEE-NAME.
           DISPLAY "Employee Name: " EMPLOYEE-NAME.
           STOP RUN.
       END PROGRAM EXP02.

حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

خروجی:

Employee Name: John Doe
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

مثال 3: اختصاص یک مقدار به یک قسمت گروه بندی شده

برای این مثال ، ما می خواهیم از راه های زوج برای انجام کار مورد نظر استفاده کنیم. در COBOL ، می توانید مقادیر را به قسمتهای فردی در یک گروه با استفاده از Move … TO اختصاص دهید ، یا می توانید داده ها را مستقیماً با استفاده از Move … به گروه منتقل کنید. در برنامه های بزرگتر COBOL ، ممکن است با چند گروه با زمینه هایی با همین نام روبرو شوید (به عنوان مثال ، نام کارمندان در گروه های مختلف). با استفاده از Move … TO در تضمین مقادیر به قسمت صحیح اختصاص داده می شود و از اشکالات احتمالی یا سردرگمی جلوگیری می شود. بیایید نگاهی به چند مثال بیندازیم:

حرکت … به
این جفت بیانیه به شما امکان می دهد مقادیر را به قسمتهای فردی در یک گروه اختصاص دهید.

       IDENTIFICATION DIVISION.
       PROGRAM-ID. EXP03A.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 EMPLOYEE-DETAILS.
          05 EMPLOYEE-NAME PIC X(20).
          05 EMPLOYEE-ID   PIC 9(5).
       PROCEDURE DIVISION.
           MOVE "Jane Smith56789" TO EMPLOYEE-DETAILS.
           DISPLAY "Employee Name: " EMPLOYEE-NAME.
           DISPLAY "Employee ID: " EMPLOYEE-ID.
           STOP RUN.
       END PROGRAM EXP03A.

حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

حرکت … به … در
این گروه از بیانیه ها به شما امکان می دهد داده ها را مستقیماً به گروه منتقل کنید ، حتی اگر نام های مشابهی را به اشتراک بگذارند. در حالی که من هرگز نمی گویم ، من می گویم که نباید در برنامه COBOL کوچکتر اتفاق بیفتد ، اما اگر در یک برنامه COBOL بزرگتر کار می کنید ، احتمالاً قصد دیدن این موضوع را دارید.

       IDENTIFICATION DIVISION.
       PROGRAM-ID. MULTIPLE-GROUPS.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 EMPLOYEE-DETAILS.
          05 NAME PIC X(20).
       01 MANAGER-DETAILS.
          05 NAME PIC X(20).
       PROCEDURE DIVISION.
      *> Assigning values to fields in EMPLOYEE-DETAILS
           MOVE "John Doe" TO NAME IN EMPLOYEE-DETAILS.
           DISPLAY "Employee Name: " NAME IN EMPLOYEE-DETAILS.

      *> Assigning values to fields in MANAGER-DETAILS
           MOVE "Jane Smith" TO NAME IN MANAGER-DETAILS.
           DISPLAY "Manager Name: " NAME IN MANAGER-DETAILS.

           STOP RUN.
       END PROGRAM MULTIPLE-GROUPS.

حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

مثال 4: تاریخ

نمونه متداول دیگر که در یک برنامه تجاری می یابیم ممکن است تاریخ باشد. اکنون ، این مکانی است که به نظر می رسد کبول ، حداقل در تمام تحقیقات من ، فاقد آن است. استاندارد Cobol به خودی خود به طور بومی از یک اختصاصی پشتیبانی نمی کند هيئت هيتر نوع فیلد بنابراین ، اگر می خواهیم یک تاریخ را ذخیره کنیم ، باید خودمان کار را انجام دهیم. در اینجا چند نمونه از قالب بندی یک تاریخ آورده شده است.

تاریخ به عنوان قسمت گروهی

اگر می خواهید یک تاریخ را به صورت ساختاری ذخیره کنید ، می توانید از یک قسمت گروه بندی شده برای تجزیه آن به اجزای آن (سال ، ماه و روز) استفاده کنید. در اینجا یک مثال آورده شده است:

       IDENTIFICATION DIVISION.
       PROGRAM-ID. CBLDATES.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 BIRTH-DATE.
          02 BIRTH-YEAR   PIC 9(4).
          02 BIRTH-MONTH  PIC 9(2).
          02 BIRTH-DAY    PIC 9(2).
       PROCEDURE DIVISION.
           MOVE 2025 TO BIRTH-YEAR
           MOVE 02   TO BIRTH-MONTH
           MOVE 21   TO BIRTH-DAY
           DISPLAY "Year: " BIRTH-YEAR
           DISPLAY "Month: " BIRTH-MONTH
           DISPLAY "Day: " BIRTH-DAY
           STOP RUN.
       END PROGRAM CBLDATES.

حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

تاریخ به عنوان قسمت ویرایش شده فردی

اگر می خواهید یک تاریخ را در یک قالب خاص (به عنوان مثال ، MM/DD/YYYY) ذخیره و نمایش دهید ، می توانید از یک فیلد ویرایش شده با الفبایی استفاده کنید. در اینجا یک مثال آورده شده است:

       IDENTIFICATION DIVISION.
       PROGRAM-ID. CBLDATES.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 BIRTH-DATE PIC 99/99/9999.
       PROCEDURE DIVISION.
           MOVE 08151985 TO BIRTH-DATE
           DISPLAY BIRTH-DATE
           STOP RUN.
       END PROGRAM CBLDATES.

حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

در این مثال ، تصویر بند قالب تاریخ را با برش (/) درج شده در موقعیت های ثابت تعریف می کند. سپس از عبارت Move برای اختصاص یک تاریخ خام استفاده می شود تاریخ تولد، و کبول ، به نوبه خود ، جادوی خود را کار می کند و تاریخ را به عنوان: 08/15/1985بشر

خلاصه

در این مقاله ، ما اصول و متغیرهای داده COBOL را مورد بررسی قرار دادیم ، از جمله نحوه تعریف و قالب بندی آنها با استفاده از بندهای تصویر. ما همچنین به نمونه های عملی اختصاص مقادیر به متغیرها و داده های قالب بندی برای نمایش نگاه کردیم. با تسلط بر این مفاهیم ، شما مجهز خواهید بود تا داده ها را به طور مؤثر در برنامه های COBOL انجام دهید ، خواه با محاسبات عددی ، رشته های الفبایی یا نمایشگرهای فرمت شده کار کنید.

اگر شما یک توسعه دهنده با تجربه COBOL هستید و هرگونه نادرستی یا مناطقی را مشاهده می کنید که می توانم توضیحات خود را بهبود ببخشم ، از بازخورد شما بسیار قدردانی می کنم! و اگر تازه وارد Cobol هستید اما این مقاله را جالب می دانید ، دوست دارم از شما نیز بشنوم. افکار و سوالات شما همیشه مورد استقبال قرار می گیرد – من در این سفر از یادگیری و رشد در کنار دیگران لذت می برم!

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا