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

Extension
Extension meaning
Notes
sqlrpgle
RPGLE (SQL)
Can use .pgm notation
rpgle
RPGLE
Can use .pgm notation
clle
CLLE
Can use .pgm notation
cl
CLLE
Can use .pgm notation
clp
CL (OPM)
Should be renamed to clle
pf
Physical File
Table
lf
Logical File
View/Index
dspf
Display File
prtf
Printer File
msgf
Message filee
sql
Any SQL object
Type determined by create statement
table
SQL table
Expects CREATE TABLE
view
SQL view
Expects CREATE VIEW
index
SQL index
Expects CREATE INDEX
alias
SQL alias
Expects CREATE ALIAS
sqlalias
SQL alias
Expects CREATE ALIAS
sqlprc
SQL procedure
Expects CREATE PROCEDURE
sqludf
SQL function
Expects CREATE FUNCTION
sqludt
SQL table function
Expects CREATE FUNCTION
sqltrg
SQL trigger
Expects CREATE TRIGGER
sqlseq
SQL sequence
Expects CREATE SEQUENCE
bnd
Binder source
binder
Binder source
Should be renamed bnd
cmd
Command
{"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}
>