Snippets
Contents
SNIPPETS
A snippet is a sort of code template or skeleton that allows you to quickly set up a commonly used code fragment like a subprocedure definition (in ILE RPG). Snippets are available from WDSC 7.0 up.
This differs from code templates because the code template is invoked by the code completion facility Ctrl+Space.
Code completion with templates requires you to start keying the 'trigger' (in RPG, usually the operation code.)
With snippets, you can have Lpex include anything at all, with no trigger needed aside from the double click on the selected snippet.
Snippets View
original post [1]
To open a snippets view:
- Enable XML Developer capability:
- Window → Preferences → General → Capabilities, and then check XML Developer.
- Window → Show view → Other → Basic → Snippets
Create a Snippets Category
original post [2]
- You only need to create a Category once, conceptually its like CRTSRCPF.
- Create as many Categories as you wish.
- -Right-click in the Snippets view and select Customize...
- -Click the New button and create a New Category
- -Click the New button and create a New Item
- -Click on the snippet and then click the New button that is adjacent to the Variables list
- -Enter your snippet and use the Insert Variable Placeholder button to add the variable
alternatively use the copy, right click process below, its easier.
Use snippets for RPGLE, CLLE, DSPF and PRTF source members.
Snippets RPG
original post [3]
You can use the snippets to insert stuff into your program.
To create your own RPG snippets,
- you can open the view in RSE or iSeries Editing perspective,
- select your source,
- then Right Click / Paste in the snippets view, into your Previously created Category.
It will then create a new template.
To use the snippet;
- Open a source member for editing.
- Place the cursor where you want the code.
- Go to the Snippets view, to the Category where the snippet is.
- Double click on the snippet and it appears in the source
original post [4]
Another method is to create a Snippet.
- Open the Snippets view.
- Create a new 'Drawer' for your snippets.
- Copy some source.
- Right-click in your snippet drawer, paste.
- This will bring up the snippet creation wizard.
Long Procedure Name
original post [5]
How do I get the PR to stay at the same column position, irrespective of what name I use for the procedure ?
Use:
D ${Procedure}... PR
Otherwise the procedure name has to always be 12 characters in length. With the elipsis (...) it can be up to 60 odd characters in length.
Examples
Exporting and importing snippets
ref [[6]]
Snippets can be transferred to another PC by the process of exporting and importing.
You export on the PC you want to copy the snippets from, and import on the PC you want to copy them to.
Exporting
- In the Snippets view right click and select Customize
- Select your custom snippet category
- Select Export (top of the category list, left side)
- See the 'Save as...' dialogue box, remember the file name you chose!
- Copy/FTP/email that XML file to the target PC
Importing
- Get a snippets XML file some place where it's available to WDSC
- In the Snippets view right click and select Customize
- Select your custom snippet category
- Select Import (top of the category list, left side)
- See the 'Open...' dialogue box.
- Select the XML file to import
Snippets XML structure
<?xml version="1.0" encoding="UTF-16"?> <snippets> <category filters="*" id="category_1185380127750" initial_state="0" label="RPG" largeicon="" smallicon=""> <description/> <item category="category_1185380127750" class="" editorclass="" id="item_1207666311828" label="subprocedure" largeicon="" smallicon=""> <description><![CDATA[Subprocedure skeleton]]></description> <content><![CDATA[ * ${proc_comment} p ${proc_name} b d ${proc_name} pi 10i 0 d ${parm_name} 1a d rc 10i 0 inz c/free return rc; /end-free p e]]></content> <variable default="Description of procedure" id="name_3" name="proc_comment"> <description><![CDATA[Description]]></description> </variable> <variable default="new_parm" id="name_2" name="parm_name"> <description><![CDATA[Parameter name]]></description> </variable> <variable default="new_proc" id="name_1" name="proc_name"> <description><![CDATA[Procedure name]]></description> </variable> </item> </category> </snippets>
CodeGrabs
Templates
gettok not strtok()
ref: [[7]]
From: Scott Klement
H DFTACTGRP(*NO) D gettok PR 1024A varying D string 65535A varying const options(*varsize) D delims 50A varying const D pos 10I 0 d blah s 100A varying D tokens s 100A varying dim(50) D x s 10I 0 D y s 10I 0 D msg s 52A /free Blah = 'Test||||||123|x|||8900'; x = 0; y = 0; // // Get each token from the string and DSPLY it // dow ( x <= %len(blah) ); y = y + 1; msg = 'token ' + %char(y) + '=' + gettok( blah : '|' : x ); dsply msg; enddo; // // Or, perhaps just dump all tokens to an array // x = 0; tokens(*) = gettok( blah : '|' : x ); for y = 1 to %elem(tokens); msg = 'elem ' + %char(y) + '=' + tokens(y); dsply msg; endfor; *inlr = *on; /end-free *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ * gettok(): Get next token from string * * string = (input) string to search * delims = (input) delimiters * pos = (i/o) next position to search. At the start * of a string, set this to zero. Pass * it on subsequent calls to remember where * you left off. * * Returns the token found. *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ P gettok B D gettok PI 1024A varying D string 65535A varying const options(*varsize) D delims 50A varying const D pos 10I 0 D res s 1024A varying D start s 10I 0 D c s 1A /free start = pos + 1; %len(res) = 0; for pos = start to %len(string); c = %subst(string:pos:1); if %check(delims:c) = 1; res = res + c; else; leave; endif; endfor; return res; /end-free P E
Thanks Scott. Without your work I would still be coding RPGIII.
External links
The official WDSC web page [8]
The WDSC Developer blog [9]
WDSC tags on del.ici.ous [10]