PDA

View Full Version : API QLGSORT/QLGSRTIO



muadeep
03-01-07, 11:18
Hallo,

Wir haben mehrere ILE-RPG's in welchen die beiden API's QLGSORT & QLGSRTIO eingebaut sind und auch laufen!

Jetzt muß ich in ein bereits bestehendes "RPG" (nicht ILE) die beiden API's zum sortieren einbauen, doch leider bekomme ich das dann nicht zum laufen !!!
(das RPG-Pgm. kann/darf leider nicht auf ILE umgestellt werden) :-(

Hatte jemand eine funktionierende Beschreibung (Source-Code) für die beiden API's QLGSORT & QLGSRTIO für RPG !!!
(Sourcecode für: E-Bestimmungen, I-Bestimmungen u. C-Bestimmungen)

kuempi von stein
03-01-07, 11:24
Hello,

warum muddelste das nicht einfach selber um?
Wenn Du lauffähige ILE hast, ist es doch relativ leicht, den Code zu lesen und das in OLD-RPG umzusetzen?

kuempi

Änderung:
Ach ich seh, bekommst Fehler... mhh...

Fuerchau
03-01-07, 11:39
QLGSORT:
http://publib.boulder.ibm.com/infocenter/iseries/v5r4/topic/apis/QLGSORT.htm?resultof=%22%71%6c%67%73%6f%72%74%22%2 0%22%71%6c%67%73%6f%72%22%20

QLGSRTIO:
http://publib.boulder.ibm.com/infocenter/iseries/v5r4/topic/apis/QLGSRTIO.htm?resultof=%22%71%6c%67%73%6f%72%74%22% 20%22%71%6c%67%73%6f%72%22%20

muadeep
03-01-07, 12:56
umbauen hab ich ja auch versucht !!! :-(

Will damit eine SubFile sortieren!


beim "Sätze zurück in die SubFile schreiben" mit QLGSORT


* die Sätze zurück in die SubFile schreiben
C Z-ADD3 IOTYPE
*
C 1 DO SAVRRN COUNT
*
C CALL 'QLGSRTIO'
C PARM SORTIO
C PARM NUSED
C PARM SFLRCD
C PARM IORECL
C PARM NUSED
C PARM ERROR
*
C Z-ADDCOUNT SCRRN
C Z-ADDSCRRN RRN
C WRITESFL1
*
C ENDDO

werden mir auch wieder alle Sätze (zumindest die Anzahl) in die SubFile zurückgeschrieben, aber der Inhalt der Subfilesätze ist immer der, des "letzten Satzes" !!!

Fuerchau
03-01-07, 13:43
Bist du dir denn sicher, dass du beim Füllen (Put) auch verschiedene Sätze übergeben hast ?!
ggf. hast du nur den Chain für deine SFL vergessen ;)

muadeep
03-01-07, 14:03
ich gehe mal davon aus! ;-)

hier mal der gesamt Code (für das sortieren):


C SORSFL BEGSR
*
* initialisieren der Schlüsselfelder (key fields) zum sortieren
C SELEC
* Felder als Schlüsselfeder, 9 Byte, char., aufst.
C CSRFLD WHEQ 'TNR'
C Z-ADD8 KEYSTA
C Z-ADD9 KEYSIZ
C Z-ADD6 KEYDTA
C SELEC
C #F7 WHEQ FKEY
C Z-ADD1 KEYASC
C #F8 WHEQ FKEY
C Z-ADD2 KEYASC
C ENDSL
C MOVELKEYINF FGK,1
C ENDSL
*
* weitere Sort Parameter laden
C 16 MULT MAXKEY BLOCKL
C ADD 80 BLOCKL
C Z-ADD1 NBROFK
C Z-ADD62 RECLEN Record Länge
* initialisieren Sort I/O Felder
C Z-ADDRECLEN IORECL
C Z-ADD1 IORECC
*
* initialisieren der Sortier-Routine
C CALL 'QLGSORT'
C PARM SORTBL
C PARM NUSED 16
C PARM NUSED
C PARM SIZLIS 90
C PARM RETURS 90
C PARM ERROR
*
* Sätze in die I/O Routine schreiben
C Z-ADD1 IOTYPE
*
* die gesamte SubFile schreiben
C 1 DO SAVRRN COUNT
*
C COUNT CHAINSFL1 70
*
C *IN70 IFNE *ON
*
C CALL 'QLGSRTIO'
C PARM SORTIO
C PARM SFLRCD
C PARM NUSED
C PARM SIZLIS
C PARM NUSED
C PARM ERROR
*
C ENDIF
*
C ENDDO
*
* Ende der Eingabe signalisieren & Sub
C Z-ADD2 IOTYPE
*
C CALL 'QLGSRTIO'
C PARM SORTIO
C PARM SFLRCD
C PARM NUSED
C PARM SIZLIS
C PARM NUSED
C PARM ERROR
*
* SubFile löschen
C MOVE *ON *IN33
C Z-ADD*ZEROS RRN
C WRITESF1CTL
C MOVE *OFF *IN33
*
* die Sätze zurück in die SubFile schreiben
C Z-ADD3 IOTYPE
*
C 1 DO SAVRRN COUNT
*
C CALL 'QLGSRTIO'
C PARM SORTIO
C PARM NUSED
C PARM SFLRCD
C PARM IORECL
C PARM NUSED
C PARM ERROR
*
C Z-ADDCOUNT SCRRN
C Z-ADDSCRRN RRN
C WRITESFL1
*
C ENDDO
*
C Z-ADDRRN SAVRRN
*
C ENDSR

Fuerchau
03-01-07, 15:04
In solchen Fällen würde ich mal mittels STRDBG die Variableninhalte prüfen.

muadeep
03-01-07, 15:13
hab ich auch schon !!! :-(

Fuerchau
03-01-07, 17:53
Dann würde ich nochmal genau die Sortparameter prüfen und ggf. die Errorcodes auswerten.
Ich denke, dass da ein Parameterfehler vorliegt.