جی ان یو کوبول

GnuCOBOL) OpenCOBOL سابق، و برای مدت کوتاهی به عنوان GNU Cobol شناخته می‌شود) یک اجرای رایگان زبان برنامه نویسی COBOL است، که در اصل توسط کیسوکه نیشیدا طراحی شده و توسعه آن توسط راجر وایل انجام شد. آخرین تحولات اکنون توسط سایمون سوبیش، ران نورمن، ادوارد هارت، سرگئی کشیرین و بسیاری دیگر هدایت می‌شود.  

## تاریخچه
هنگام کار با RildoPragana روی TinyCOBOL، کیسوکه تصمیم گرفت یک کامپایلر COBOL مناسب برای ادغام با gcc را تست کند. این به زودی به پروژه OpenCOBOL تبدیل شد. کیسوکه تا سال 2005 و نسخه 0.31 به عنوان توسعه دهنده اصلی کار می کرد. سپس راجر به عنوان سرپرست فعالیت خود را آغاز کرد و OpenCOBOL 1.0 را در 27 دسامبر 2007 منتشر کرد. کار بر روی OpenCOBOL 1.1 پیش از انتشار تا فوریه 2009 ادامه داشت. در مه 2012، توسعه فعال به SourceForge منتقل و پیش از انتشار فوریه 2009 به عنوان یک نسخه اصلی مشخص شد.  اواخر سپتامبر 2013، OpenCOBOL به عنوان یک پروژه GNU پذیرفته شد، و به GNU Cobol تغییر نام یافت، و سپس سرانجام در سپتامبر 2014 به GnuCOBOL باز هم تغییر نام یافت.  رون نورمن ماژول Report Writer را به عنوان شاخه ای از GnuCobol 2.0 اضافه کرده و سرگئی کشیرین نسخه ای را توسعه داد که به جای C از واسطه های C ++ استفاده می کند. 

آخرین نسخه فعلی اکنون v3.1 نهایی است، که در 7 ژوئیه 2020 منتشر شده است.

انتقال کپی رایت به بنیاد نرم افزار آزاد از طریق کد منبع GnuCOBOL (شامل نسخه هایی با هجی های GNU Cobol و OpenCOBOL) در 17 ژوئن 2015 نهایی شد. 

## فلسفه
با توجه به سعی در مطابقت استانداردهای COBOL با مشخصات فعلی COBOL 2014 و همچنین درج ویژگی های رایج در کامپایلرهای موجود، توسعه دهندگان ادعا نمی کنند که هیچ سطح مطابقت با استانداردها وجود دارد.  حتی در این صورت، نسخه 2.2 نهایی از بیش از 9،688 (99.79٪) آزمایش موجود در مجموعه آزمون NIST COBOL 85، 9708 آزمایش (که 20 مورد حذف شده اند) را به سلامت طی کرده اند. 

GnuCOBOL یک برنامه COBOL (کد منبع) را به یک برنامه C تبدیل می کند. سپس برنامه C می تواند در کد واقعی استفاده شده توسط رایانه (کد شی) یا در کتابخانه ای که سایر برنامه ها را دارا می باشد (به صورت هایپرلینک)، وارد شود. تحت UNIX و سیستم عامل های مشابه (مانند Linux)، از کامپایلر GNU C استفاده می شود. برای Windows، بسته Microsoft Visual Studio Express کامپایلر C را ارائه می دهد. تدوین دو مرحله ای معمولاً با یک دستور انجام می شود، اما گزینه ای وجود دارد که به برنامه نویس اجازه می دهد پس از توسعه کد C، تدوین را متوقف کند. 

## مستندسازی
سایت opencobol.org از 2002 تا 2012 سایت رسمی تیم توسعه بود و بهترین منبع اطلاعات بالادستی توسعه را ارائه می داد.  با این حال، همه تحولات اخیر اکنون در فضای پروژه SourceForge در  https://sourceforge.net/projects/gnucobol/ اتفاق می افتد.

راهنمای برنامه نویس GnuCOBOL ، توسط گری کاتلر ، تحت مجوز GNU Free Documentation منتشر شد . و در ادامه به روز شده است تا شامل GnuCOBOL همراه با Report Writer شود و در صفحه مروری همراه با اسناد GnuCOBOL و آخرین نسخه ها در درخت کد ذکر شده است. با انتشار نسخه کامپایلر جدید، توسط وینسنت کوئن، جیمز ک. لودن و دیگران، این کد در https://gnucobol.sourceforge.io/ در دسترس است.

## برنامه های نمونه

### تاریخی

```cobol
000100* HELLO.COB GnuCOBOL example
000200 IDENTIFICATION DIVISION.
000300 PROGRAM-ID. hello.
000400 PROCEDURE DIVISION.
000500   DISPLAY "Hello, world!".
000600   STOP RUN.
```
تدوین و اجرا:
```console
$ cobc -x HELLO.COB
$ ./HELLO
Hello, world!
```


### فرمت مدرن و رایگان

```cobolfree
*> GnuCOBOL Hello World example
id division.
program-id. hello.
procedure division.
display "Hello, world!" end-display
goback.
```
تدوین و اجرا:
```console
$ cobc -x -free hello.cob
$ ./hello
Hello, world!
```


### کوتاهترین
کوتاهترین برنامه معتبر COBOL با گزینه توسعه در GnuCOBOL 2.0، یک فایل خالی است. تدوین و اجرا:
```console
$ cobc -x -frelax-syntax ./empty.cob
./empty.cob: 1: Warning: PROGRAM-ID header missing - assumed
$ ./empty
$
```
برای نسخه های قبلی و با نحو آرام:
```cobolfree
display"Hello, world!".
```
تدوین و اجرا:
```console
$ cobc -x -frelax-syntax -free hello.cob
hello.cob: 1: Warning: PROGRAM-ID header missing - assumed
hello.cob: 1: Warning: PROCEDURE DIVISION header missing - assumed
$ ./hello
Hello, world!
```
بدون تغییر و با هر نسخه از GnuCOBOL، GNU Cobol یا OpenCOBOL. (توجه داشته باشید، 7 فضای پیشرو برای مطابقت با منبع طرح COBOL ثابت وجود دارد):
```cobol
program-id.h.procedure division.display "Hello, world!".
```
تدوین بدون خطا رخ می دهد:
```console
$ cobc -x smallest.cob
$ ./smallest
Hello, world!
```
*لطفا توجه داشته باشید که این لیست چیزهای بی اهمیت به عنوان شکل خوب COBOL در نظر گرفته نمی شود. COBOL به عنوان یک زبان برنامه نویسی انگلیسی خواندنی طراحی شده است.*

## پیاده سازی
تجزیه کننده و اسکنر واژگانی از Bison و Flex استفاده می کنند. کامپایلرهای دارای مجوز GPL و کتابخانه های معتبر LGPL با C نوشته شده اند و از C ABI برای ارتباط برنامه خارجی استفاده می کنند.

بسته بندی Build از سیستم ساخت گنو استفاده می کند. تست های استاندارد با استفاده از تست Autoconf، ANSI85 و همچنین آزمون نسخه های Perl اعتبارسنجی می شود.

اسکریپت پیکربندی تنظیم کننده کامپایل GnuCOBOL گزینه هایی دارد که شامل موارد زیر است:

* انتخاب کامپایلر C و گزینه های آن برای تدوین تبدیل
* سیستم مدیریت پایگاه داده برای پشتیبانی ISAM
* توسعه iconv

## دسترسی

* انتشار 1.0 از SourceForge.
* نسخه 1.1 از SourceForge
* نسخه توسعه 2.0 از SourceForge
* بسته cobolDebian.
* 2.2 نسخه نهایی منتشر شده در 7 سپتامبر 2017 از SourceForge
* 2.2 مستندسازی منتشر شده در سپتامبر 2017 از درخت کد SourceForge.
* 3.1 منتشر شده در در ژوئیه 2020 همراه با مستندسازی

## منابع

## لینک های خارجی

* سایت GNU ، نسخه های رسمی GnuCOBOL
*   
* کنسرسیوم COBOL منبع باز در ژاپن
* سnالات متداول GnuCOBOL
* Add1ToCOBOL منبع باز Cobol و سایت OpenCOBOL
*   
* گروه جدید کاربران COBOL
رده:نرم‌افزارهای پروژه گنو
رده:کامپایلرها و مفسرهای آزاد
رده:کامپایلرها
رده:کوبول
رده:صفحات با ترجمه بازبینی‌نشده