LinkedIn

View Lee Dare's profile on LinkedIn

Search This Blog

Saturday, December 6, 2025

Synon 2E Internals - Steve Hinzmann Synon User Group 1991

Synon 2E internal file structure


I have a few posts (see below) where I discuss the Synon 2E internal files.


This all stems from the awesome work presented by this legend, Steve!!!




OG presentation scan.


Warning query these files at your own peril!  However, this knowledge is awesome for things like generation of data dictionaries and source code pre-compilations.

Thanks for reading. 
Lee.

Useful synon sites

Synon 2E related useful sites and links


This blog isn't the only useful place to get great Plex and Synon 2E content.

Here are some 'up to date' and 'active' links.  

These appear to be creating content largely from the 2E manuals.

The 2E manuals in their raw form from Broadcom.

The Broadcom forum.

Annual conference site from CM First.

If you want to modernise your Synon 2E applications or port.

A services company?

A lovely old post from the OG sales guy from Synon.

Some LinkedIn groups and their member count as of 06/12/2025.
https://www.linkedin.com/groups/3307655/ - Synon Professional (417)
https://www.linkedin.com/groups/1637887/ - Synon Programmers (1880)

I'd appreciate a reciprocal link for my site if you are the owners of any of these.  It helps with google discovery. :-)

Any other links to share, please get in touch.

Thanks for reading. 
Lee.

Synon 2E - Technical Deep Dives

Synon 2E - Technical Deep Dives


Below are some long form posts targeting specific areas of the Synon 2E tech stack.

I thoroughly enjoyed writing these 'back in the day' and hope that they help some of you.

The generic data driver is a method to output *Arrays into PRTFIL's or DSPFIL's without having to define a structure file etc.  Very, very useful and I have used numerous times.  The only design consideration is the array size depending on which RPG generator is being used. 


Performance tuning batch jobs?


Pet hates?

Some things that I don't like seeing in 2E coding.  Call them standards?, call them being a fusspot?

Code reviews, love them or hate them, they share knowledge and create better developers.

General Synon 2E topics, hints, tips, 'How to' guides.  They'll be a gem or two in here for most of you.

This should be standard in all shops

Nice little tips here

A personal favourite

Really useful, especially with the new webservices push and unpack and package up input and output arrays.

Thanks for reading. 
Lee.

Synon 2E - SQL and Model files summary

Synon 2E - SQL and Model files summary


Some of the SQL posts over the last year or so.  Some useful 2E model files extraction routines, audit stamp updates and some general IBMi knowledge.


Want to get down and dirty into the inner depths of the 2E model files?  These posts will help give you the confidence to dive in.

WARNING: Not for the faint hearted and welcome to surrogate hell (or is it heaven).


Thanks for reading. 
Lee.

Friday, December 5, 2025

Synon 2E - Standards posts all in one page

Synon 2E - Standards posts all in one page


Many of these were written years ago and google is gradually forgetting them.

Here is a summary of some of the technical posts I've made with lots of helpful hints, tips and development standards for Synon 2E, CA 2E and now Broadcom 2E.


Thanks for reading. 
Lee.

Tuesday, November 18, 2025

The Worst Word in the Workplace

I wrote a post about the word 'resource' many years ago.  

https://leedare-plex2e.blogspot.com/2016/10/feeling-resourcefulnot.html

Today for a little bit of fun, I asked 'co-pilot' to refactor it, add humour and energy.  This was the result!  Quite impressive if you ask me.

Thanks for reading and don't bother reading the original as 'Co-pilot' did way better!

Lee.


Let’s get one thing straight: my most hated word at work is not f$%ktosserw&^%er, or even the dreaded “c-word” (and no, I don’t mean Christmas). Those are fine in context — usually shouted across a pub table after someone’s nicked your chips.

The word that makes me twitch, the one that should be banished from every office, is this:

Resource.

“We don’t have the resource.” “I’ll check the resource schedule.”

Every time I hear it, a little part of my soul packs its bags and heads for the door.

Why “Resource” Is Rubbish

Calling people “resources” is corporate code for: you’re replaceable, interchangeable, and about as personal as a stapler.

Once upon a time, companies had Personnel Departments — actual humans looking after actual humans. Then came the Americanisation: Human Resources. That was the moment we stopped being people with skills and started being reference numbers with salary ceilings.

And if your company still talks about you as a “resource”? Time to polish your CV, or at least stand up and say: No thanks, I’m not coal.

People ≠ Commodities

Let’s remember what a resource really is: coal, sugar, soybeans, oil, cocoa, tin, steel. All fine words for things you can burn, melt, or trade on an exchange.

But last time I checked:

  • Coal hasn’t written a single C# function.

  • Sugar hasn’t debugged a parsing algorithm.

  • Soybeans haven’t offered counselling.

  • Oil hasn’t built a school.

Humans do those things. Humans with talent, experience, and the kind of domain knowledge you can’t just order off Amazon Prime.

The IT Angle

I work in software engineering. Sure, you need technical chops — databases, languages, platforms. But you also need business knowledge, context, and the ability to translate messy real-world problems into clean code.

Thinking you can pluck someone off the street and have them instantly productive on a complex system? That’s not “resource planning.” That’s fantasy football.

Better Words Exist

Open a thesaurus and you’ll find words that actually respect people:

  • Ability

  • Capability

  • Talent

These words recognise skill. They acknowledge contribution. They don’t reduce you to a consumable item that can be replenished like printer paper.

My Crusade

Project managers love “resource.” Middle managers (especially the 6ft 5” ones with clipboards) practically bathe in it. But every time I hear it, I cringe.

So I’ve made it my mission: wherever I work, I beat the drum to eradicate this corporate cancer. Replace it with Capability, Skills, Staffing, Talent, Capacity — anything that reminds us we’re humans, not coal.

Final Word

If you’re reading this and still calling your colleagues “resources,” stop. Unless you genuinely believe Dave from Accounts is interchangeable with a sack of soybeans.

Words matter. Use better ones.

Moan over.

Thanks for reading, 

Lee.

Sunday, March 23, 2025

Google was hiding the site

[Edit: 05/09/2025 - I appear to still be getting search issues for the blog. Have tried getting it reindexed]

I am not 100% sure what happened, but during 2024 I had the need to search my blog site for a problem I was getting.  I knew I had solved and documented it on the site previously, after all, this the principle reason for writing up these posts i.e. share knowledge and maintain a library of information across employers/contracts.

However, when searching I noticed that the page I was expecting simply wasn't being returned.

I tried a few other browsers and had similar results (nothing).  DuckDuckGo however, worked!  At this point the penny dropped that somehow it was Google that was dropping my site and the other browsers were configured to use google as their search provider.

To this day I don't 100% know what was causing this issue, but the steps I worked through were.

1. Set the blogger site to not allow crawlers.



2. Generate a sitemap with a free 3rd party tool and upload to the root.



3. Use google console to encourage reindexing.  This reduce the number of non indexed pages from over 200 to 44.  Note the 44 are mainly duplicates of the page within the google/blogger sphere so fortunately this means the content is still fully available.



4. Be patient and respond to the many google emails, keep retrying indexing options after each YouTube video of influencer blog post and their recommendations that I read.


For now, this seems to be solved.

This issue may have been going on for weeks, months or even years.  I have no idea.  Hopefully, all now back online and searchable.

If you don't already, please bookmark if you find this blog of value so that you can continue to watch as new posts get up and running.

I had held back on some posts for early 2025 whilst I was trying to resolve the issues.

Thanks for reading. 
Lee.


Thursday, April 4, 2024

Did you know Synon 2E has a Full Screen Mode?

Long time IBMi users typically work with an expanded WRKACTJOB screen shortly after learning all the command keys that are of use.  As a junior developer (back in the early nineties), I was always in awe of the seniors around me who didn't need to toggle through the command key options whilst managing the jobs running in the system.




As always though, once you had learnt the system you could press F21 to remove the subfile options and command key text, thus freeing up more room for the critical data on these somewhat limited 5250 displays. 

If I remember rightly, the command key used to bring up a window and you could chose between Basic (might have been intermediate) and Advanced mode.  This has long since been removed from the o/s and the command key merely acts as a toggle nowadays.  The reward of course was the ability to see more of your processes and interactive sessions.

Here is my current 'Pro' setup lol.





Synon aka 2e with various prefixes, Cool: Allfusion: Advantage: CA: etc also has the ability for a user to see more on selected screens.  Here are a couple that might be of interest. 

Action Diagram Expanded vs Normal view.





Most developers could survive with this as virtually all worth their salt will know every option and command key off the top of their head anyhow.

A lesser-known scenario and also a bit harder to remember all the options, is the ability to extend the records shown when viewing a model list. 




Personally, I don't have this one switched on but kudos to anyone out there that does!

So how do you set these values?

From the main Services Menu take option 11 for Edit model profile (YEDTMDLPRF) or as the menu implies, execute the command.  Then set the options accordingly.




You're welcome.
Thanks for reading.
Lee.

Sunday, March 17, 2024

They say a picture is a 1000 words!

A thousand?........... In this instance it is more like tens of thousands.

Anyhow, a colleague was talking about tag clouds the other day and it got me thinking.

"What would this blogs labels look like in a tag cloud?"

So......... I popped online and googled for a tag cloud generator and discovered this site that looked pretty good.

https://simplewordcloud.com/ or you can click here:  Simple Word Cloud Generator

After some Excel wizardry to generate the source data. Roughly translated as a screen scrape, removing some spaces, duplicating entries relative to the blog usage count, copying out the formatted data etc.

I excitedly 'cut n pasted' it into the input field on the website and clicked the button.

Results as below.


Thanks for reading.
Lee.

Wednesday, March 6, 2024

Synon 2E Understanding CONstant usages

UPDATE: 06/12/2025 - Linked to a summary post dedicated to deep dive long form posts.

One of my colleagues was trying to track down some (potentially) hardcoded string values/literals.  She had already used the SQL queries in one of my previous posts to narrow down the usages inside messages, however, she was also concerned that there might be some underlying hardcoding via CND and more specifically via CON values.

As a side, IMHO there should be next to no CON usages in a well architected model apart from, values like *BLANK, 0.00 and some tolerance towards values like 12 (months), 52 (weeks), 365 (days), 100 (percentage).  I'd even accept 1,2,3, 9999999 etc.

I draw the line at meaningful literals that could have been scoped conditions (CND) or database values.

My main reason for this is that there isn't a way (via the 2E tool interface) to check for usages of CON values.  Obviously, we can scan the generated source, but then what about all the genuine field names or comments.

Back with 2E!  When generating the source, it somehow lets the generator knows about them and adds them into the code (inline) or as part of a data structure.  Take a look at the bottom of a source listing if you don't believe me.

Here is a sample function using some constants.  Note the 'Create Flatfile' call is passing in 'FLAT FILE CoNsTANT' as CON.


And here are the relevant code snippets of generated source i.e. The moves.




Followed by the structure of CON values at the bottom.  Note: Sometimes the CON is generated 'inline' at the point of the MOVE.



Anyhow, in order for the CON values to be consistently applied, they must be in the 2E model data files somewhere, with the theory being we should also be able to query them.  As CON can only be applied via action diagram text, let's start by looking there in the YMSGACTRFP file.



It looks like we have some constants referred to in field ELMTTL ** (Element Title - highlighted RED).  This could be a good start but there are some obvious limitations. Whilst it looks like it covers basic *MOVE and *CONCAT field assignments, when we have hardcoded values going into a function call (PURPLE), the CON value isn't reflected in the ELMTTL field.  

**It would appear that the ELMTTL data is used for the AD layout.  Perhaps I will expand more on the complexities of this data in a future post!!!

However, it looks like 2E maintains a surrogate reference for each unique CON value used in the AD regardless of AD syntax used.  (GREEN)

This is awesome, but how are these linked via the function AD?  

To do this, let's take a gander at a subset of the 2E files in the model library. The one highlighted below looks like it could be useful and most likely, a file most dev's didn't even realise existed.  Hands up who has explored the intricacies of the model schema.


What does the data look like in the table?


Bingo, we have our constants.  

Luckily ours are at the bottom of the file :-) for easier blog documentation.  Diving deeper, we have now confirmed that 2E maintains a surrogate reference for each unique CON value and if we refer back to the YMSGACTRFP image above, these are all highlighted in the GREEN section.

So, all that is left for us to do is to identify the CON values we want to analyse, work out what functions they are linked to via the AD code and some pretty cool impact analysis is before us.

Here is a sample SQL retrieving the many different usages of the term 'constant'.  As CON is only ever associated with field @@SUB3, the query is quite straight forward.

Ensuring you have the correct library list.

SELECT DISTINCT b.@@msg, c.OBJNME, b.@@SUB3, a.CON, c.OBJOWN    
FROM YCONDTARFP a LEFT JOIN YMSGACTRFP b ON a.@@CON = 
b.@@SUB3 LEFT JOIN YMDLOBJRFP c on b.@@MSG = c.@@OBJ  
WHERE UPPER(a.CON) LIKE '%CONSTANT%' AND c.CUROBJ = 'Y'                       

This query returns unique records for each of the functions using CON context with the word 'constant', the UPPER() function ensures we don't miss any based-on case differences.  The rest of the query does a basic join to return some additional fields from YMDLOBJRFP (This is the *ALLOBJ or *A model list).  You can add to this query or tidy up names and formatting however you like.


I hope that this helps someone.

Thanks for reading.
Lee.

p.s. This remains one of my favourite posts :-)