Bahasa pengaturcaraan PL/I

**PL/I** ("Programming Language One", ) merupakan bahasa pengaturcaraan komputer imperatif direka bagi applikasi saintifik, kejuruteraan, dan perniagaan. Ia merupakan salah satu satu dari bahasa pengaturcaraan yang kaya ciri dan yang pertama dalam kategori kaya dengan ciri-ciri. Ia telah digunakan oleh pelbagai pengguna akademik, perdagangan, dan industri semenjak ia diperkenalkan pada awal 1960-an, dan masih aktif sehingga kini.

Domain utama PL/I adalah pemprosesan data; ia menyokong rekrusif dan pengaturcaraan berstruktur. Sintek bahasa menyerupau bahasa Inggeris dan sesuai bagi menggambarkan format data rumit, dangan set fungsi yang luas tersedia bagi mengesah dan menggunakannya.

## Sejarah PL/I
PL/I dibangunkan oleh IBM, di Makmal Hursley di United Kingdom, sebagai sebahagian dari System/360. Sebelum System/360, IBM membuat beberapa model tidak serasi komputer kerangka IBM bagi tujuan berlainan: sesetengah bertujuan bagi kegunaan perdagangan, yang lain bagi tujuan saintifik. Matlamat projek System/360 adalah membangunkan siri modelkomputer yang serasi bagi menggantikan semua model sebelumnya, dan boleh digunakan sama baik sama ada untuk tujuan perdagangan dan saintifik.

### Ciri-ciri dipertingkat
Dengan sokongan penuh bagi penuding kepada semeju jenis data (termasuk penuding kepada struktur), rekursi, pemprosesan bersama, fungsi bina dalam yang meluas serta banyak kemudahan lain, PL/I memang dilihat lebih maju kehadapan berbanding bahasa-bahasa lain yang sezaman dengannya. Tambahan lagi, prapemproses makro PL/ adalah luar biasa, agak unik, dalam penggunaan sintaks dan semantik bahasa sasarannya (misalnya jika dibandingkan dengan arahan "#" prapemproses C). Walau bagaimanapun, semua ini masih gagal meyakinkan sebahagian besar golongan pengaturcara atau kedai-kedai untuk bertukar kepada PL/I.

## Contoh aturcara
### Aturcara Hello dunia

```
Hello2: proc options(main);
     put list ('Hello, dunia!');
end Hello2;
```


### Carian ayat

```
FINDSTRINGS: PROCEDURE OPTIONS(MAIN)
  /* READ A STRING, THEN PRINT EVERY */
  /* SUBSEQUENT LINE WITH A MATCH */

  DECLARE PAT VARYING CHARACTER(100),
          LINEBUF VARYING CHARACTER(100),
          (LINENO, NDFILE, IX) FIXED BINARY;

  NDFILE = 0; ON ENDFILE(SYSIN) NDFILE=1;
  GET EDIT(PAT) (A);
  LINENO = 1;
  DO WHILE (NDFILE=0);
    GET EDIT(LINEBUF) (A);
    IF LENGTH(LINEBUF) > 0 THEN DO;
      IX = INDEX(LINEBUF, PAT);
      IF IX > 0 THEN DO;
        PUT SKIP EDIT (LINENO,LINEBUF)(F(2),A)
      END;
    END;
    LINENO = LINENO + 1;
  END;
  END FINDSTRINGS;
```


## Piwaian
ANSI ANSI X3.53-1976 (R1998) *Information Systems - Programming Language - PL/I*.
ANSI ANSI X3.74-1987 (R1998) *Information Systems - Programming Language - PL/I General-Purpose Subset*.

## Nota

## Pautan luar

* Kednos PL/I for HP OpenVMS VAX and Alpha
* IBM PL/I for IBM mainframe, Linux on zSeries and Windows
* PL/I Resources
* PL/I home 
* PL/I newsletter  April 2006
* Power vs. Adventure - PL/I and C A side-by-side comparison of PL/I and C.
* PL/I for GCC The pl1gcc project is an attempt to create a native PL/I compiler using the GNU Compiler Collection.
* Languages Related to PL/I 
* Kednos PL/I for OpenVMS Compiler Documentation
* PL/I grammar