Profile Scripting Language
Encyclopedia
Profile Scripting Language (PSL) is a superset of MUMPS that adds object-oriented language features.
The initial language concepts included the ability to bind the source code to a database schema which generates dynamic Data Access Classes (preempting similar persistent class generation in Java) and database methods that could be code generated into either MUMPS globals or a commercial RDMS. The PSL Data Access Classes are identified in the source code as Record.
PSL interprets legacy MUMPS code, though some legacy commands (such as GO, NEW and KILL) can be disabled or marked as deprecated (generating compiler warnings). Direct references to MUMPS globals can also be disabled or deprecated. Numerous PSL compiler directives (e.g., #IF/#ELSE, #ACCEPT) were also added to the PSL language, as were Java style blocks and comments, modern error handling semantics and white space. Two MUMPS language elements were eliminated initially (M-style blocks and goto label+offset) as they could not be supported within the PSL object scope handling.
An interesting feature of PSL is the ability to define a Class as either Intrinsic or Extrinsic. Extrinsic classes implement Class, Method and Instance variable definitions consistent with common OO languages, and are generated into compiled code (accessed at runtime). Intrinsic Classes and methods, on the other hand are implemented as extensions to the PSL compiler itself, and are executed at COMPILE time in order to generate runtime code. This feature can generate heavily optimized or specialized code depending on compile time or program conditions. This capability was considered to be critical to the ability to generate code that optimized both a MUMPS global database and multiple commercial RDMS's from the same PSL source.
The initial release of PSL (icalled M++) was in the summer of 1999, as part of the Profile version 6.2. In that release, less than 5% of the MUMPS code was converted to PSL, though new development was predominantly in PSL source code and analysis for widespread reverse engineering was underway. The Profile application conversion from MUMPS to PSL was 100% completed in 2006, with the release of Profile version 7.0. Profile version 7.0 was also the first commercial version of the application that could be targeted to run on either a GTM MUMPS database or an Oracle 9 database, with GTM MUMPS source code as the PSL target.
Currently PSL is continuing to be actively enhanced to support IBM DB2 as a target database and to optionally generate either [GTM] MUMPS or Java target code from the same PSL source code.
Frank Sanchez developed the original language semantics, syntax, parser, compiler and optimizer, database interface, schema binding, intrinsic classes and methods over the Christmas holiday in 1998 and early 1999. He was assisted in the development of the initial commercial releases (version 1 - 2) by the late Bob Chiang, the Head of Data-Qwik tool development at Sanchez, and Mark Spier, a Senior Software Developer with Sanchez at the time. In later versions the language has been maintained and significantly enhanced by Frans Witte, a Senior Technical Lead at FIS, and Dan Russell, formerly the Head of Technology Development at Sanchez and now a remote Senior Technical consultant to FIS. Frans and Dan have focused on implementing the database independent features of the language, and more recently the Java source target code.
Also, PSL is supported by a modern Eclipse-based development environment, with integrated schema and code management and numerous interactive plug-ins. Jim Joyce, a senior R&D Developer at FIS has been responsible for much of the IDE vision and development.
As of June, 2011, PSL remains the source code language for the FIS Profile banking system, deployed in 26 countries and over 200 institutions, including some of the world’s largest banks. While Java and commercial RDMS deployments are possible in the future, today 100% of the deployments are on the GTM MUMPS target language and database, with the exception of a single Oracle DBMS deployment.
Several software companies also experimented with PIP as a free competitor to InterSystems Caché, KB SQL, and similar MUMPS data-dictionary stacks. Some of them developed their own PIP patches, extensions, and add-ons.
History
Profile Scripting Language (PSL) is a language that implements OO concepts such as classes, methods, encapsulation and inheritance (and strong data typing) as extensions to the MUMPS language. PSL was initially conceived in December 1998 by Frank Sanchez, then President of Sanchez Computer Associates, as a transformation tool that could 'reverse engineer' a very large and complex banking application (Profile) which was written predominantly in MUMPS. (Sanchez Computer Associates (SCAI) was acquired by Fidelity National Financial (FNF), now Fidelity National Information Services (FIS), in April, 2004)The initial language concepts included the ability to bind the source code to a database schema which generates dynamic Data Access Classes (preempting similar persistent class generation in Java) and database methods that could be code generated into either MUMPS globals or a commercial RDMS. The PSL Data Access Classes are identified in the source code as Record
PSL interprets legacy MUMPS code, though some legacy commands (such as GO, NEW and KILL) can be disabled or marked as deprecated (generating compiler warnings). Direct references to MUMPS globals can also be disabled or deprecated. Numerous PSL compiler directives (e.g., #IF/#ELSE, #ACCEPT) were also added to the PSL language, as were Java style blocks and comments, modern error handling semantics and white space. Two MUMPS language elements were eliminated initially (M-style blocks and goto label+offset) as they could not be supported within the PSL object scope handling.
An interesting feature of PSL is the ability to define a Class as either Intrinsic or Extrinsic. Extrinsic classes implement Class, Method and Instance variable definitions consistent with common OO languages, and are generated into compiled code (accessed at runtime). Intrinsic Classes and methods, on the other hand are implemented as extensions to the PSL compiler itself, and are executed at COMPILE time in order to generate runtime code. This feature can generate heavily optimized or specialized code depending on compile time or program conditions. This capability was considered to be critical to the ability to generate code that optimized both a MUMPS global database and multiple commercial RDMS's from the same PSL source.
The initial release of PSL (icalled M++) was in the summer of 1999, as part of the Profile version 6.2. In that release, less than 5% of the MUMPS code was converted to PSL, though new development was predominantly in PSL source code and analysis for widespread reverse engineering was underway. The Profile application conversion from MUMPS to PSL was 100% completed in 2006, with the release of Profile version 7.0. Profile version 7.0 was also the first commercial version of the application that could be targeted to run on either a GTM MUMPS database or an Oracle 9 database, with GTM MUMPS source code as the PSL target.
Currently PSL is continuing to be actively enhanced to support IBM DB2 as a target database and to optionally generate either [GTM] MUMPS or Java target code from the same PSL source code.
Frank Sanchez developed the original language semantics, syntax, parser, compiler and optimizer, database interface, schema binding, intrinsic classes and methods over the Christmas holiday in 1998 and early 1999. He was assisted in the development of the initial commercial releases (version 1 - 2) by the late Bob Chiang, the Head of Data-Qwik tool development at Sanchez, and Mark Spier, a Senior Software Developer with Sanchez at the time. In later versions the language has been maintained and significantly enhanced by Frans Witte, a Senior Technical Lead at FIS, and Dan Russell, formerly the Head of Technology Development at Sanchez and now a remote Senior Technical consultant to FIS. Frans and Dan have focused on implementing the database independent features of the language, and more recently the Java source target code.
Also, PSL is supported by a modern Eclipse-based development environment, with integrated schema and code management and numerous interactive plug-ins. Jim Joyce, a senior R&D Developer at FIS has been responsible for much of the IDE vision and development.
As of June, 2011, PSL remains the source code language for the FIS Profile banking system, deployed in 26 countries and over 200 institutions, including some of the world’s largest banks. While Java and commercial RDMS deployments are possible in the future, today 100% of the deployments are on the GTM MUMPS target language and database, with the exception of a single Oracle DBMS deployment.
PSL and PIP Users
Since the PIP is an open-source edition of DATA-QWIK framework that is used to run/develop PROFILE core-banking application, it is naturally used in all PROFILE-based financial institutions.Several software companies also experimented with PIP as a free competitor to InterSystems Caché, KB SQL, and similar MUMPS data-dictionary stacks. Some of them developed their own PIP patches, extensions, and add-ons.