Voorbeelden van assembler-code.

Deze pagina bevat de volgende voorbeeld programma's:

Opmerking 1:
Alle voorbeelden op deze pagina zijn slechts voorbeelden, en onder voorbehoud van fouten en/of omissies. U mag (delen van) deze code gebruiken maar u doet dat volledig voor eigen risico. Het blijft natuurlijk altijd zaak uw programma's grondig te testen.

Opmerking 2:
Alle voorbeelden op deze pagina zijn volledig in het engels. Dit is gedaan om de volgende redenen:

Overigens wijzen wij er op, dat u voor alle commentaar in uw sources het best de taal kunt kiezen die in uw bedrijf het meest gangbaar is. Dit geldt natuurlijk ook voor alle overige vormen van documentatie.


Static glue module.

Ten einde een miniatuur DataBase Manager (DBMS) te bouwen zijn bij het ontwerp de volgende uitgangspunten gehanteerd:

Bekijk de source code van programma BXAIO.


Dynamic VSAM I/O module.

Voor een korte beschrijving van het ontwerp zie a.u.b. het hierboven beschreven static glue module.

Bekijk de source code van programma BXAIO00.


Dummy program in amode 24.

Dit programma geeft een bericht af om te tonen dat het correct is aangeroepen. Het programaa draait in amode 24, en heeft verder geen nuttige functie. Het programma is gemaakt om de GLUE macro te testen en het kan gebruikt worden als voorbeeld-programma.

Bekijk de source code van programma BXALOWPG.


Overzicht van control blocks.

Dit programma heeft geen run-time functie. Het wordt gebruikt om overzichten aan te maken van velden in control blocks, en om te controleren of er geen conflicten ontstaan in de naamgeving van velden.

De te genereren control blocks kunnen geselecteerd worden door de waarde van de assembly-variabele &SELECT te veranderen.

Bekijk de source code van programma BXAMAPS.


Test de waarde van een JCL-variabele.

Dit programma controleert de waarde van een JCL-variabele.

De uit te voeren test wordt opgegeven in het PARM-veld van het EXEC-statement.
De syntax is als volgt:

Het programma geeft een return code van 0 (test voldoet) of 4 (test voldoet niet). Andere steps in de zelfde job kunnen uitgevoerd of overgeslagen worden aan de hand van deze return codes.

Het volgende voorbeeld toont hoe het programma BXATEST gebruikt kan worden in een JCL proc:

//BXAASM   PROC MEMB=,PROJ=,LVL=
//*
//TEST     EXEC PGM=BXATEST,PARM='&LVL EQ T'
//PROD     EXEC PGM=BXATEST,PARM='&LVL EQ P'
//*
//* Aanroep assembler, met standaard parms voor TEST
//*
//         IF   (TEST.RC = 0) THEN
//ASMT     EXEC PGM=ASMA90,PARM=(OBJECT,NODECK,TERM,
//             'SYSPARM(SRLIST,DBG,OPT)')
//SYSLIB   DD   DSN=SYS1.MACLIB,DISP=SHR
//         DD   DSN=SYS1.MODGEN,DISP=SHR
//         DD   DSN=BIXOFT.ASMPLUS&LVL..MACLIB,DISP=SHR
//         DD   DSN=BIXOFT.ASMPLUSP.MACLIB,DISP=SHR
//         DD   DSN=BIXOFT.&PROJ.&LVL..MACLIB,DISP=SHR
//         DD   DSN=BIXOFT.&PROJ.P.MACLIB,DISP=SHR
//...      Overige DD-statements
//         ENDIF
//*
//* Aanroep assembler, met standaard parms voor PROD
//*
//         IF   (PROD.RC = 0) THEN
//ASMP     EXEC PGM=ASMA90,PARM=(OBJECT,NODECK,TERM,
//             'SYSPARM(SRLIST,NODBG,OPT)')
//SYSLIB   DD   DSN=SYS1.MACLIB,DISP=SHR
//         DD   DSN=SYS1.MODGEN,DISP=SHR
//         DD   DSN=BIXOFT.ASMPLUS&LVL..MACLIB,DISP=SHR
//         DD   DSN=BIXOFT.&PROJ.&LVL..MACLIB,DISP=SHR
//...      Overige DD-statements
//         ENDIF
//*
//         PEND

Bekijk de source code van programma BXATEST.


Kopieer een dataset of een member.

Dit programma kopieert een member van een PDS concatenatie of een concatenatie van sequentiële datasets.

Voor MEMBER=memname wordt de INPUT concatenatie van PDS'en afgezocht naar het opgegeven member, welke vervolgens wordt gekopieerd naar OUTPUT.
Voor DATSET=PS wordt de volledige concatenatie van sequentiële datasets gekopieerd van INPUT naar OUTPUT.

IEBCOPY doet meer, maar gebruikt control cards als input; deze kunnen niet gesubstitueerd worden vanuit JCL variabelen.
IEHLIST kopieert eveneens datasets, maar het drukt ook alle records af, waardoor de spool snel volloopt.

Het volgende voorbeeld toont hoe het programma BXACOPY gebruikt kan worden in een JCL proc:

//BXAASM   PROC MEMB=,PROJ=,LVL=
//*
//* Copy source member to be used
//*
//COPY     EXEC PGM=BXACOPY,PARM='MEMBER=&MEMB'
//INPUT    DD   DSN=BIXOFT.&PROJ.&LVL..ASM,DISP=SHR
//         DD   DSN=BIXOFT.&PROJ.P.ASM,DISP=SHR
//OUTPUT   DD   SPACE=(TRK,(10,10,1),RLSE),DISP=(NEW,PASS,DELETE),
//             DCB=(RECFM=FB,LRECL=80,BLKSIZE=27920),
//             DSN=&&ASM(&MEMB)
//*
//...      andere steps
//         PEND

Bekijk de source code van programma BXACOPY.


Een bibliotheek ontladen.

Dit programma ontlaadt alle members van een PDS in een enkele IEBUPDTE-job waarmee de bibliotheek elders weer geladen kan worden.
Het programma accepteert een parameter, deze specificeert de step-name voor de te genereren IEBUPDTE-job.

Het voordeel van het IEBUPDTE-formaat is dat de broncode ook onder DOS, Windows, en Unix zichtbaar gemaakt en gewijzigd kan worden.

Onderstaand voorbeeld toont hoe BXAUNLD kan worden aangeroepen.

//BXAUNLD  EXEC PGM=BXAUNLD,PARM='GOODIES'
//SYSUT1   DD   DSN=BIXOFT.GOODIES.ASM,DISP=OLD
//SYSUT2   DD   DSN=BIXOFT.GOODIES.UNLOAD,DISP=(NEW,CATLG,CATLG),
//             SPACE=(TRK,(10,10),RLSE),UNIT=3390,VOL=SER=TEMP00,
//             DCB=(LRECL=80,BLKSIZE=27920,RECFM=FB)

Bekijk de source code van programma BXAUNLD.


Opmerkingen? Vragen? Meer informatie? Klik het onderwerp van uw keuze aan, of e-mail ons met uw vragen.

 

Klassieke Assembler voorbeelden:

Bixoft's eXtended Assembly voorbeelden:


 

Deze site is aangesloten bij WebRing.
Bekijkt u gerust de lijst van mainframe-gerelateerde sites.
Rennende
    Tyrannosaurus Rex Dino's zijn niet dood. Ze zijn gezond en wel en leven in computer-centra overal om ons heen. Zij spreken in tongen en doen wonderbare magie met computers. Pas op voor de dino! En voor het geval u zit te wachten op het definitieve einde van deze dino's: onthoud dat dino's de wereld 155 miljoen jaren hebben geregeerd!
Dino's en andere anachronismen
[ Aanmelden | Ring Overzicht | Willekeurig | << Vorige | Volgende >> ]