Programming Language for Business

Programming Language for Business or PL/B is a business-oriented programming language originally called DATABUS and designed by Datapoint in 1972 as an alternative to COBOL because Datapoint's 8-bit computers could not fit COBOL into their limited memory, and because COBOL did not at the time have facilities to deal with Datapoint's built-in keyboard and screen.

A version of DATABUS became an ANSI standard, and the name PL/B came about when Datapoint chose not to release its trademark on the DATABUS name.

Functionality
Much like Java and .NET, PL/B programs are compiled into an intermediate byte-code, which is then interpreted by a runtime library. Because of this, many PL/B programs can run on DOS, Unix, Linux, and Windows operating systems. The PL/B development environments are influenced by Java and Visual Basic, and offer many of the same features found in those languages. PL/B (Databus) is actively used all over the world, and has several forums on the Internet dedicated to supporting software developers.

Since its inception, PL/B has been enhanced and adapted to keep it modernized and able to access various data sources. It has a database capability built-in with ISAM and Associative Hashed Indexes, as well as ODBC, SQL, Oracle, sequential, random access, XML and JSON files.

All the constructs of modern programming languages have been incrementally added to the language. PL/B also has the ability to access external routines through COM, DLL's and .NET assemblies. Full access to the .NET framework is built into many versions.

Several implementations of the language are capable of running as an Application Server like Citrix, and connecting to remote databases through a data manager.

Source code example
IF (DF_EDIT[ITEM] = "PHYS") STATESAVE MYSTATE IF (C_F07B != 2) DISPLAY  *SETSWALL 1:1:1:80: *BGCOLOR=2,*COLOR=15: *P49:1," 7-Find " ELSE DISPLAY  *SETSWALL 1:1:1:80: *BGCOLOR=7,*COLOR=0: *P49:1," 7-Find " ENDIF STATEREST MYSTATE TRAP     GET_PRO NORESET IF F7         ENDIF IF (SHOW_FILTER AND THIS_FILTER AND C_CUSTNO <> "MAG") LOADMOD  "filter" PACK     PASS_ID WITH "QED     ",QED_ID1,BLANKS MOVE     " FILTER DISPLAY (F6)        " TO PASS_DESC SET C_BIGFLT CALL     RUN_FILT USING PASS_ID,PASS_DESC,"432" UNLOAD   "filter" CLEAR    THIS_FILTER ENDIF