@@ -17,6 +17,18 @@ INTERFACE
1717 FUNCTION SORT_USINT_ARRAY ;
1818
1919 FUNCTION SORT_STRING_ARRAY ;
20+
21+ FUNCTION REVERSE_LREAL_ARRAY ;
22+ FUNCTION REVERSE_REAL_ARRAY ;
23+
24+ FUNCTION REVERSE_DINT_ARRAY ;
25+ FUNCTION REVERSE_UDINT_ARRAY ;
26+ FUNCTION REVERSE_INT_ARRAY ;
27+ FUNCTION REVERSE_UINT_ARRAY ;
28+ FUNCTION REVERSE_SINT_ARRAY ;
29+ FUNCTION REVERSE_USINT_ARRAY ;
30+
31+ FUNCTION REVERSE_STRING_ARRAY ;
2032END_INTERFACE
2133
2234
@@ -73,6 +85,7 @@ IMPLEMENTATION
7385 END_FOR ;
7486 END_FUNCTION
7587
88+
7689 FUNCTION SORT_DINT_ARRAY : VOID
7790 VAR_IN_OUT
7891 data : ARRAY [..] OF DINT ;
@@ -255,4 +268,232 @@ IMPLEMENTATION
255268 END_FOR ;
256269 END_FOR ;
257270 END_FUNCTION
271+
272+
273+ FUNCTION REVERSE_LREAL_ARRAY : VOID
274+ VAR_IN_OUT
275+ data : ARRAY [..] OF LREAL ;
276+ END_VAR
277+
278+ VAR_TEMP
279+ i, j : DINT ;
280+ i_start : DINT ;
281+ i_end : DINT ;
282+ i_center : DINT ;
283+ temp : LREAL ;
284+ END_VAR
285+
286+ i_start := _firstIndexOf(data);
287+ i_end := _lastIndexOf(data);
288+ i_center := i_start + (i_end - i_start) / 2 ;
289+
290+ FOR i := i_start TO i_center DO
291+ j := i_end - (i - i_start);
292+ temp := data[i];
293+ data[i] := data[j];
294+ data[j] := temp;
295+ END_FOR ;
296+ END_FUNCTION
297+
298+ FUNCTION REVERSE_REAL_ARRAY : VOID
299+ VAR_IN_OUT
300+ data : ARRAY [..] OF REAL ;
301+ END_VAR
302+
303+ VAR_TEMP
304+ i, j : DINT ;
305+ i_start : DINT ;
306+ i_end : DINT ;
307+ i_center : DINT ;
308+ temp : REAL ;
309+ END_VAR
310+
311+ i_start := _firstIndexOf(data);
312+ i_end := _lastIndexOf(data);
313+ i_center := i_start + (i_end - i_start) / 2 ;
314+
315+ FOR i := i_start TO i_center DO
316+ j := i_end - (i - i_start);
317+ temp := data[i];
318+ data[i] := data[j];
319+ data[j] := temp;
320+ END_FOR ;
321+ END_FUNCTION
322+
323+
324+ FUNCTION REVERSE_DINT_ARRAY : VOID
325+ VAR_IN_OUT
326+ data : ARRAY [..] OF DINT ;
327+ END_VAR
328+
329+ VAR_TEMP
330+ i, j : DINT ;
331+ i_start : DINT ;
332+ i_end : DINT ;
333+ i_center : DINT ;
334+ temp : DINT ;
335+ END_VAR
336+
337+ i_start := _firstIndexOf(data);
338+ i_end := _lastIndexOf(data);
339+ i_center := i_start + (i_end - i_start) / 2 ;
340+
341+ FOR i := i_start TO i_center DO
342+ j := i_end - (i - i_start);
343+ temp := data[i];
344+ data[i] := data[j];
345+ data[j] := temp;
346+ END_FOR ;
347+ END_FUNCTION
348+
349+ FUNCTION REVERSE_UDINT_ARRAY : VOID
350+ VAR_IN_OUT
351+ data : ARRAY [..] OF UDINT ;
352+ END_VAR
353+
354+ VAR_TEMP
355+ i, j : DINT ;
356+ i_start : DINT ;
357+ i_end : DINT ;
358+ i_center : DINT ;
359+ temp : UDINT ;
360+ END_VAR
361+
362+ i_start := _firstIndexOf(data);
363+ i_end := _lastIndexOf(data);
364+ i_center := i_start + (i_end - i_start) / 2 ;
365+
366+ FOR i := i_start TO i_center DO
367+ j := i_end - (i - i_start);
368+ temp := data[i];
369+ data[i] := data[j];
370+ data[j] := temp;
371+ END_FOR ;
372+ END_FUNCTION
373+
374+ FUNCTION REVERSE_INT_ARRAY : VOID
375+ VAR_IN_OUT
376+ data : ARRAY [..] OF INT ;
377+ END_VAR
378+
379+ VAR_TEMP
380+ i, j : DINT ;
381+ i_start : DINT ;
382+ i_end : DINT ;
383+ i_center : DINT ;
384+ temp : INT ;
385+ END_VAR
386+
387+ i_start := _firstIndexOf(data);
388+ i_end := _lastIndexOf(data);
389+ i_center := i_start + (i_end - i_start) / 2 ;
390+
391+ FOR i := i_start TO i_center DO
392+ j := i_end - (i - i_start);
393+ temp := data[i];
394+ data[i] := data[j];
395+ data[j] := temp;
396+ END_FOR ;
397+ END_FUNCTION
398+
399+ FUNCTION REVERSE_UINT_ARRAY : VOID
400+ VAR_IN_OUT
401+ data : ARRAY [..] OF UINT ;
402+ END_VAR
403+
404+ VAR_TEMP
405+ i, j : DINT ;
406+ i_start : DINT ;
407+ i_end : DINT ;
408+ i_center : DINT ;
409+ temp : UINT ;
410+ END_VAR
411+
412+ i_start := _firstIndexOf(data);
413+ i_end := _lastIndexOf(data);
414+ i_center := i_start + (i_end - i_start) / 2 ;
415+
416+ FOR i := i_start TO i_center DO
417+ j := i_end - (i - i_start);
418+ temp := data[i];
419+ data[i] := data[j];
420+ data[j] := temp;
421+ END_FOR ;
422+ END_FUNCTION
423+
424+ FUNCTION REVERSE_SINT_ARRAY : VOID
425+ VAR_IN_OUT
426+ data : ARRAY [..] OF SINT ;
427+ END_VAR
428+
429+ VAR_TEMP
430+ i, j : DINT ;
431+ i_start : DINT ;
432+ i_end : DINT ;
433+ i_center : DINT ;
434+ temp : SINT ;
435+ END_VAR
436+
437+ i_start := _firstIndexOf(data);
438+ i_end := _lastIndexOf(data);
439+ i_center := i_start + (i_end - i_start) / 2 ;
440+
441+ FOR i := i_start TO i_center DO
442+ j := i_end - (i - i_start);
443+ temp := data[i];
444+ data[i] := data[j];
445+ data[j] := temp;
446+ END_FOR ;
447+ END_FUNCTION
448+
449+ FUNCTION REVERSE_USINT_ARRAY : VOID
450+ VAR_IN_OUT
451+ data : ARRAY [..] OF USINT ;
452+ END_VAR
453+
454+ VAR_TEMP
455+ i, j : DINT ;
456+ i_start : DINT ;
457+ i_end : DINT ;
458+ i_center : DINT ;
459+ temp : USINT ;
460+ END_VAR
461+
462+ i_start := _firstIndexOf(data);
463+ i_end := _lastIndexOf(data);
464+ i_center := i_start + (i_end - i_start) / 2 ;
465+
466+ FOR i := i_start TO i_center DO
467+ j := i_end - (i - i_start);
468+ temp := data[i];
469+ data[i] := data[j];
470+ data[j] := temp;
471+ END_FOR ;
472+ END_FUNCTION
473+
474+
475+ FUNCTION REVERSE_STRING_ARRAY : VOID
476+ VAR_IN_OUT
477+ data : ARRAY [..] OF STRING ;
478+ END_VAR
479+
480+ VAR_TEMP
481+ i, j : DINT ;
482+ i_start : DINT ;
483+ i_end : DINT ;
484+ i_center : DINT ;
485+ temp : STRING ;
486+ END_VAR
487+
488+ i_start := _firstIndexOf(data);
489+ i_end := _lastIndexOf(data);
490+ i_center := i_start + (i_end - i_start) / 2 ;
491+
492+ FOR i := i_start TO i_center DO
493+ j := i_end - (i - i_start);
494+ temp := data[i];
495+ data[i] := data[j];
496+ data[j] := temp;
497+ END_FOR ;
498+ END_FUNCTION
258499END_IMPLEMENTATION
0 commit comments