Page 1 of 1

Moving the identifier field in the DDS

Posted: Tue Apr 23, 2013 11:34 am
by Wayne C.
We have tried to maintain a practise of placing the screen identifier in the upper right hand corner of our screens (row 1, col 67). It's a rare occasion, but it has happened that our RPG programmer will move the identifier so that he could use that space on the screen. I've come to learn that when the identifier is physically moved after you have created a Genie rendering of that screen, the link is lost between the application screen and the Genie rendering. I just alerted the programmer that when he moves the identifier in the DDS, the Genie rendering hangs in limbo. I know the rendering still exists, it's just not being displayed. Is there any way around this?
I've sucked it up a couple of times and just re-did the rendering. But I can see this scenario happening in the future. I know that as soon as I move the identifier in the DDS to its original position, the Genie rendering will reappear.

Thanks in advance.

Re: Moving the identifier field in the DDS

Posted: Tue Apr 23, 2013 1:48 pm
by Scott Klement
Hello Wayne,

Yes, that's how Genie works. When a 5250 screen is sent from the IBM i server to your PC, Genie examines it for a particular string (or group of strings) that's on the screen in a particular place. If it matches, then it applies the customizations.

If you change the screen identifier (change it's text or move it, etc) then it will no longer match, and therefore it won't apply the customizations anymore.

If you want to try to fix this without having to re-do the customizations, you could try fixing the Genie files by hand. There are two files you'd need to adjust, one that applies to all screens (named "screens.lst") and one that applies only to the particular screen you're working with (named after the screen itself.) Both files are located in the IFS under /www/INSTANCE-NAME/htdocs/profoundui/userdata/genie skins/SKIN-NAME/screens

For example, I have a screen that's identified by the string "PRODDETL" located on the screen in row 1, column 3. In the screens.lst file, I'll find this:

Code: Select all

  ... other screens here ...
    {
      "screen": "PRODDETL",
      "modified": "1366396610348",
      "identifiers": [
        { "id": "D_1_3", "value": "PRODDETL" }
      ]
    }
  ... other screens here...
You see the "identifiers" section say that it's looking at a field named D_1_3. That means it's a field in row 1, column 3. And the value it's looking for is the string "PRODDETL". If I wanted to change that to be in, for example, row 1, column 65, I could potentially just edit this file and change "D_1_3" to "D_1_65".

Next, I'd need to edit the file named "PRODDETL.scn" in the same IFS directory. (the filename is always the "screen" field in screens.lst, plus the .SCN suffix.) In that file, I'd find something like this:

Code: Select all

{
  "screen": { "screen_name": "PRODDETL" },
  "items": [
    { "id": "D_1_3", "screen_identifier": "true", "field_type": "output field", "value": "script: value", "identifier_value": "PRODDETL" }, 
... screen customizations and other fields follow...
Notice that it says "screen_identifier" is "true"? That's how I know this is the screen identifier field. And you'll see, again, the id is D_1_3, so I'd need to change that to D_1_65 (or whereever the screen is located)

Once I've saved my changes to these two files, I coudl click the "refresh" button in the design toolbar, and see if my changes worked.

Does that help?

Re: Moving the identifier field in the DDS

Posted: Wed Apr 24, 2013 11:21 am
by Wayne C.
Thanks Scott. That makes sense. I think I'm going to give that a whirl.
Thanks again.