Software Dependency Management System??

A software dependency management system is a tool or process used to identify, track, and control the dependencies between different components of a software project. The Source Orbit Extension is included in the recommended Visual Studio Code for IBM i installer package - IBM i Development Pack

Source Orbit is a dependency management system designed specifically for IBM i projects.

Source Orbit

Quite simply, Source Orbit helps developers manage and understand their source code, especially when using Git for languages like RPGLE, CL, DDS, and SQL. Here are some key features and benefits of Source Orbit:

  • Dependency Tree : Scans all applicable source code to build a comprehensive dependency tree.
  • Impact Analysis : Shows how objects would be affected as developers write code, helping to foresee potential issues.
  • Automation : Can generate JSON or build scripts to automatically build application changes.
  • Reporting : Generates real-time reports for branches being worked on, allowing project owners to see their application status.
  • Migration Support : Assists in migrating code to Git, making the transition smoother.

That already sounds pretty cool right?

So, what are the benefits for IBM i Programmers:

  • Enhanced Code Understanding : By visualizing dependencies, programmers can better understand the structure and relationships within their codebase.
  • Improved Productivity : Automation of build processes and impact analysis can save time and reduce errors.
  • Real-Time Insights : Reporting features provide immediate feedback on the state of the application, aiding in quicker decision-making.
  • Seamless Migration : Helps in transitioning legacy code to modern version control systems like Git, ensuring that the codebase is up-to-date and manageable.

How do we install Source Orbit?

Source Orbit installs as both a VS Code extension and CLI tool. But I firmly suggest you install Source Orbit from the recommended package - IBM i Development Pack

How to structure your Source Code with Source Orbit

It is recommended that the source file name matches the resulting object name. For example:

  • SOMETHING.pgm.rpgle becomes the SOMETHING.PGM object.
  • SOMETHING.cmd becomes the SOMETHING.CMD object.

As member text is traditionally tied to source members, it is no longer supported in a standard hierarchical file system. 

Three options are available for associating descriptive text with source code:

(1) Include description in source file name (my preferred option)

  • SOMETHING-a_program_description.pgm.rpgle becomes the SOMETHING.PGM object with a description of "a program description".
  • SOMETHING-A_Command_Description.cmd becomes the SOMETHING.CMD object with a description of "A Command Description".
source orbit code naming

(2) or you can use %TEXT in your source

You can include %TEXT: in comments within your source code to add descriptions. This approach is compatible with any programming language.

**free

// %TEXT: This is the program description

dcl-pi SOMETHING;
end-pi;

eval x = y + 1;

return;

or you can include the %TEXT in the create statement:

-- %TEXT: This is the File Description
create or replace table SOMEFILE (...);

(3) Or you can use TEXT option (in RPGLE)

You can use the TEXT keyword in the H-spec or CTL-OPT operation code to define descriptive text.

**free

ctl-opt text('This is the program description');

dcl-pi SOMETHING;
end-pi;

eval x = y + 1;

return;

Source Code Extensions

ExtensionExtension meaningNotes
sqlrpgleRPGLE (SQL)Can use .pgm notation
rpgleRPGLECan use .pgm notation
clleCLLECan use .pgm notation
clCLLECan use .pgm notation
clpCL (OPM)Should be renamed to clle
pfPhysical FileTable
lfLogical FileView/Index
dspfDisplay File
prtfPrinter File
msgfMessage filee
sqlAny SQL objectType determined by create statement
tableSQL tableExpects CREATE TABLE
viewSQL viewExpects CREATE VIEW
indexSQL indexExpects CREATE INDEX
aliasSQL aliasExpects CREATE ALIAS
sqlaliasSQL aliasExpects CREATE ALIAS
sqlprcSQL procedureExpects CREATE PROCEDURE
sqludfSQL functionExpects CREATE FUNCTION
sqludtSQL table functionExpects CREATE FUNCTION
sqltrgSQL triggerExpects CREATE TRIGGER
sqlseqSQL sequenceExpects CREATE SEQUENCE
bndBinder source
binderBinder sourceShould be renamed bnd
cmdCommand
{"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}
>