Fill occurrence label in advance

Discussions about CSEntry
Forum rules
New release: CSPro 8.0
Post Reply
manishcspro
Posts: 67
Joined: June 26th, 2017, 2:15 pm

Fill occurrence label in advance

Post by manishcspro »

Is their any way to fill the occurrence label of a roster up to the max occurrence number without going to the last occurrence row.
If I enter in a roster I want to fill all the row occurrence labels at once without moving to the last row.
Presently I am using the SETOCCLABEL function to display the occurrence label of a row based on CUROCC() value.
The problem with the above method is that the occurrence label displays only for the rows where the cursor has moved.

Sample of my code:

------------------------------------------------------------------------------------------------------

PROC ACH_ITEM
PREPROC

DO I=1 WHILE I<=TOTOCC(ACH000)

TONUMBER(ACH_ITEM(I))=CUROCC();

IF DEPT='01' THEN

IF CUROCC() = 1 THEN $ = "0101101" ENDIF;
IF CUROCC() = 2 THEN $ = "0101102" ENDIF;
IF CUROCC() = 3 THEN $ = "0101103" ENDIF;
IF CUROCC() = 4 THEN $ = "0101104" ENDIF;
IF CUROCC() = 5 THEN $ = "0101105" ENDIF;
IF CUROCC() = 6 THEN $ = "0101106" ENDIF;
IF CUROCC() = 7 THEN $ = "0101107" ENDIF;
IF CUROCC() = 8 THEN $ = "0101108" ENDIF;
IF CUROCC() = 9 THEN $ = "0101109" ENDIF;
IF CUROCC() = 10 THEN $ = "0102101" ENDIF;
IF CUROCC() = 11 THEN $ = "0102102" ENDIF;
IF CUROCC() = 12 THEN $ = "0102103" ENDIF;
IF CUROCC() = 13 THEN $ = "0103101" ENDIF;
IF CUROCC() = 14 THEN $ = "0103102" ENDIF;
IF CUROCC() = 15 THEN $ = "0103103" ENDIF;
IF CUROCC() = 16 THEN $ = "0103104" ENDIF;
IF CUROCC() = 17 THEN $ = "0103105" ENDIF;
IF CUROCC() = 18 THEN $ = "0103201" ENDIF;
IF CUROCC() = 19 THEN $ = "0103202" ENDIF;
IF CUROCC() = 20 THEN $ = "0103203" ENDIF;
IF CUROCC() = 21 THEN $ = "0103204" ENDIF;
IF CUROCC() = 22 THEN $ = "0103205" ENDIF;
IF CUROCC() = 23 THEN $ = "0103301" ENDIF;
IF CUROCC() = 24 THEN $ = "0103302" ENDIF;
IF CUROCC() = 25 THEN $ = "0103303" ENDIF;
IF CUROCC() = 26 THEN $ = "0103304" ENDIF;
IF CUROCC() = 27 THEN $ = "0103305" ENDIF;
IF CUROCC() = 28 THEN $ = "0103401" ENDIF;
IF CUROCC() = 29 THEN $ = "0103402" ENDIF;
IF CUROCC() = 30 THEN $ = "0103403" ENDIF;
IF CUROCC() = 31 THEN $ = "0103404" ENDIF;
IF CUROCC() = 32 THEN $ = "0103405" ENDIF;
IF CUROCC() = 33 THEN $ = "0104101" ENDIF;
IF CUROCC() = 34 THEN $ = "0104102" ENDIF;
IF CUROCC() = 35 THEN $ = "0104103" ENDIF;
IF CUROCC() = 36 THEN $ = "0104104" ENDIF;
IF CUROCC() = 37 THEN $ = "0104105" ENDIF;
IF CUROCC() = 38 THEN $ = "0104201" ENDIF;
IF CUROCC() = 39 THEN $ = "0104202" ENDIF;
IF CUROCC() = 40 THEN $ = "0104203" ENDIF;
IF CUROCC() = 41 THEN $ = "0104204" ENDIF;
IF CUROCC() = 42 THEN $ = "0104205" ENDIF;
IF CUROCC() = 43 THEN $ = "0104301" ENDIF;
IF CUROCC() = 44 THEN $ = "0104302" ENDIF;
IF CUROCC() = 45 THEN $ = "0104303" ENDIF;
IF CUROCC() = 46 THEN $ = "0104304" ENDIF;
IF CUROCC() = 47 THEN $ = "0104305" ENDIF;
IF CUROCC() = 48 THEN $ = "0104306" ENDIF;
IF CUROCC() = 49 THEN $ = "0104307" ENDIF;
IF CUROCC() = 50 THEN $ = "0105101" ENDIF;
IF CUROCC() = 51 THEN $ = "0105102" ENDIF;
IF CUROCC() = 52 THEN $ = "0105103" ENDIF;
IF CUROCC() = 53 THEN $ = "0106101" ENDIF;
IF CUROCC() = 54 THEN $ = "0106102" ENDIF;
IF CUROCC() = 55 THEN $ = "0106103" ENDIF;
IF CUROCC() = 56 THEN $ = "0107101" ENDIF;
IF CUROCC() = 57 THEN $ = "0107102" ENDIF;
IF CUROCC() = 58 THEN $ = "0107103" ENDIF;
IF CUROCC() = 59 THEN $ = "0107104" ENDIF;
IF CUROCC() = 60 THEN $ = "0107105" ENDIF;
IF CUROCC() = 61 THEN $ = "0107106" ENDIF;
IF CUROCC() = 62 THEN $ = "0107107" ENDIF;
IF CUROCC() = 63 THEN $ = "0108101" ENDIF;
IF CUROCC() = 64 THEN $ = "0108102" ENDIF;
IF CUROCC() = 65 THEN $ = "0108103" ENDIF;
IF CUROCC() = 66 THEN $ = "0108104" ENDIF;
IF CUROCC() = 67 THEN $ = "0109101" ENDIF;
IF CUROCC() = 68 THEN $ = "0109102" ENDIF;
IF CUROCC() = 69 THEN $ = "0109103" ENDIF;

ENDIF;

IF DEPT='02' THEN

IF CUROCC() = 1 THEN $ = "0201101" ENDIF;
IF CUROCC() = 2 THEN $ = "0201102" ENDIF;
IF CUROCC() = 3 THEN $ = "0201103" ENDIF;
IF CUROCC() = 4 THEN $ = "0201104" ENDIF;
IF CUROCC() = 5 THEN $ = "0201105" ENDIF;
IF CUROCC() = 6 THEN $ = "0201106" ENDIF;
IF CUROCC() = 7 THEN $ = "0202101" ENDIF;
IF CUROCC() = 8 THEN $ = "0202102" ENDIF;
IF CUROCC() = 9 THEN $ = "0202103" ENDIF;

ENDIF;

IF DEPT='03' THEN

IF CUROCC() = 1 THEN $ = "0301101" ENDIF;
IF CUROCC() = 2 THEN $ = "0301102" ENDIF;
IF CUROCC() = 3 THEN $ = "0301103" ENDIF;
IF CUROCC() = 4 THEN $ = "0301104" ENDIF;
IF CUROCC() = 5 THEN $ = "0301105" ENDIF;

ENDIF;

SETOCCLABEL(ACH000(I), STRIP(GETLABEL(ACH_ITEM_VS1,ACH_ITEM(I))));

ENDDO;

----------------------------------------------------------------------------------------------------------

I want the functionality that if the user enters into the roster, all the row occurrence label should filled in at a time up to the last occurrence without going to the last row.
For example if I select DEPT code = 01 then row occurrence label must be filled up to max occurrence number 69 for DEPT code = 01
or if I select DEPT code = 02 then row occurrence label must be filled up to max occurrence number 9 for DEPT code = 02
Please guide me..
sherrell
Posts: 397
Joined: April 2nd, 2014, 9:16 pm
Location: Washington, DC

Re: Fill occurrence label in advance

Post by sherrell »

Hi Manish,

You don't need the loop (since you've hard-coded everything, there's basically nothing to loop at that point). The only real change you need to do is put your logic in the preproc for the roster (ACH000, yes?), rather than the item itself. That way the fills happen before you hit the first field of the roster. Here's the same logic, tho using maketext to shorten the code:
PROC ACH000
PREPROC

   
i = curocc();

   
if DEPT='01' then

        if
i in 1:9 then
           
ACH_ITEM (i) = maketext ("010110%d",i);

       
elseif i in 10:12 then
           
ACH_ITEM (i) = maketext ("010210%d",i-9);

       
elseif i in 13:17 then
           
ACH_ITEM (i) = maketext ("010310%d",i-12);

       
elseif i in 18:22 then
           
ACH_ITEM (i) = maketext ("010320%d",i-17);

        // etc.

       
endif;

   
elseif DEPT='02' then

        if
i in 1:6 then
           
ACH_ITEM (i) = maketext ("020110%d",i);
       
else    // 7-9
           
ACH_ITEM (i) = maketext ("020210%d",i-6);
       
endif;

   
elseif DEPT='03' THEN

       
ACH_ITEM (i) = maketext ("030110%d",i);

   
endif;
Also, does DEPT need to be a string? As the usage here is just numeric.

Sherrell
manishcspro
Posts: 67
Joined: June 26th, 2017, 2:15 pm

Re: Fill occurrence label in advance

Post by manishcspro »

Thanks very much..
Problem solved..
Post Reply