You are on page 1of 49

/*Program Name : Average */ AVERAGE : PROCEDURE OPTIONS(MAIN); GET LIST(A,B,C,D,E) ; SUM = A + B+C+D+E ; AVERAGE_GRADE = SUM / 5;

PUT LIST ( AVERAGE GRADE IS , AVERAGE_GRADE) ;

END AVERAGE ;

PL/1
PUT LIST (50,ABC,123,127) ; PUT LIST(23,86,87);

PL/1
PUT PAGE LIST('ABC'); PUT SKIP LIST(123); PUT SKIP(2) LIST(127); PUT PAGE LINE (10) LIST(A,B,C) ;

PL/1
AREA: PROCEDURE OPTIONS(MAIN); GET LIST (BASA,HIGHT,SIDE1,SIDE2,SIDE3); AREA_TRANGLE=BASE/2*HIGHT; PUT PAGE LIST (AREA OF TRANGLE IS, AREA_TRANGLE); SUM=(SIDE1+SIDE2+SIDE3)/2; AREA_TRANGLE2=(SUM*(SUM-SIDE1)*(SUM-SIDE2) *(SUM-SIDE3)) ** .5; PUT SKIP LIST(AREA OF TRANGLE 2 IS, AREA_TRANGLE2); END AREA;

PL/1
DCL variable_name BASE SCALE Precision DECLARE PRICE Decimal FIXED(5.2); DCL A DECIMAL; DCL C FIXED; DCL COUNT FIXED DEC(5) INIT (0) ; DCL TITLE CHAR(13) INIT( Weekly News);

PL/1

PL/1
DCL NAME CHAR(20) VARYING ; DCL NAME CHAR(20) INITIAL (IBM GLOBAL SERVICES); DCL FIRST CHAR(3) DEFINED NAME; DECLARE LIST CHARACTER (40) , A_LIST CHARACTER (10) DEFINED LIST , B_LIST CHARACTER (20) DEFINED LIST POSTION (21) , C_LIST CHARACTER (10) DEFINED LIST POSTION (11);

PL/1
INVOKING Procedure PROG: PROC OPTIONS(MAIN) ---------------CALL SUBRT(X,Y,Z) ; (Arguments) --------------------END PROG ; INVOKED Procedure SUBRT : PROCEDURE (A,B,C) ;(Parameters) --------------------END SUBRT ;

PL/1

PL/1
Z=CALC(X,Y); Call SUBRT(8.5,X-Y,Z);

SUBRT:PROG (A,B,C) ; DCL A FIXED DEC(7,2); DCL B FIXED DEC(7,2); END SUBRT ;

PL/1
Prog1: PROCEDURE OPTIONS(MAIN) DCL SUBRT ENTRY (FIXED(7,2),FIXED(7,2),FIXED(8,2)); DCL (X,Y,Z) FLOAT DEC(6); GET LLST (X.Y); CALL SLBRI (X,Y,Z); END Prog1 ; SUBRT: PROCEDURE(A,B,C); DCL (A,B,C) FIXED DECIMAL(7,2) C = A + B; END SUBRT;

PL/1
MAINPR: PROCEDURE OPTIONS(MAIN); DCL CALC ENTRY RETURNS (FIXED DEC(7)); DCL SUM FIXED DEC(7); GET LIST(A,B,C); SUM=CALC(A,B,C) ; .. END MAINPR ; CALC:PROC(X,Y,Z) RETURNS (FIXED DECIMAL); RETURN(A+B+C); END CALC;

PL/1
Prog1: PROCEDURE OPTIONS(MAIN) DCL SUBRT ENTRY (FIXED(7,2),FIXED(7,2),FIXED(8,2)); DCL (X,Y,Z) FLOAT DEC(6); GET LLST (X,Y,Z); CALL ADD3 (X,Y,Z); END Prog1 ; ADD3: PROCEDURE(A,B,C); DCL (A,B) FIXED DECIMAL(7,2) ; DCL C FIXED DECIMAL(8,2) ; C = A + B+C; END ADD3;

PL/1
DECLARE X ENTRY EXTERNAL ; CALC X(PARAMETER) ; DCL SUB ENTRY OPTIONS(ASSEMBLER); DCL SUB ENTRY OPTIONS(COBOL) ; MAIN: PROC(PARM) OPTIONS(MAIN NOEXECOPS); DCL PARM CHAR(n) VARYING;

PL/1
FULL_NAME1 = FIRST_NAME || LAST_NAME; (Concatenation) DCL PATTERN BIT(32); PATTERN = (2)1B || (2)0B;

PL/1
ABS: X = -3.714;Y = ABS(X); CEIL: X = 3.32; /* Y = 3.714 */ Y = CEIL(X); /* Y = 4.00 */

FLOOR: X = -3.32;Y = CEIL(X);/* Y = -3.00 */ MIN,MAX: X = 100; Y = 32.76 ; Z = -6; W = MIN(X,Y,Z); /* W = -6 */ W = MAX(X,Y,Z); /* W = 100 */

PL/1
TRUNC: DCL (X,Y) DECIMAL FIXED(3,2); X = 3.32; Y = TRUNC(X); /* Y = 3.00 */ SIGN: X = 123; I = SIGN(X) ; /* I = 1 */ X = -175; I = SIGN(X); /* I = -1 */ X = 0; I = SIGN(X); /* I = 0 */ MOD:MOD(10,8) = 2; MOD(29,6) = 5

PL/1
DATE and TIME : DCL TODAY char (6) ; DCL FULLTIME CHAR(9) TODAY = DATE; FULLTIME = TIME ; SUBSTR: MONTH = SUBSTR (TODAY,3,2) ; DAY =SUBSTR (TODAY,5,2) ; YEAR = SUBSTR (TODAY,1,2) ;
TODAY_EDITED = MONTH|| /||DAY||/||YEAR; LENGTH:DCL NAME CHAR(30) VARYING INIT(MOHAN PERI);
LTH = LENGTH (NAME); /* LTH = 10 */

PL/1
LENGTH:DCL NAME CHAR(30) VARYING INIT(MOHAN PERI); LTH = LENGTH (NAME); /* LTH = 10 */ INDEX: DCL SENTENCE CHAR(40); SENTENCE = WIN TEAM EXECUTE PCB; START = INDEX(SENTENCE,PCB); /* START = 18 */ SUBSTR(SENTENCE,START,3) = PBC;
/*WIN TEAM EXECUTE PBC*/

PL/1
/*From Main Program*/ CALL CENTER_HEADING(WEEKLY ACTIVE REPORT,PRINT_LINE); /*EXTERNAL PROGRAM*/ CENETR_HEADING: PROCEDURE (HEADING ,OUTPUT_AREA); DECLARE HEADING CHAR(*); DECLARE LENGTH_OF_STRING FIXED BIN(15,0); DECALRE OUTPUT_AREA CHAR(133); DECALARE STAR FIXED BIN(15,0); DECALRE LENGTH BUILTIN; DECLARE SUBSTR BUILTIN; LENGTH_OF_STRING= LENGTH(HEADING); STAR =(132- LENGTH_OF_STRING)/2+1; SUBSTAR(OUTPUT_AREA,START, LENGTH_OF_STRING)= HEADING ; END CENTER_HEADING

PL/1
/*From Main Program*/ CALL PRORATE(MONTHLY_RENT,DAY_IN,RENT_DUE,ERROR); /*EXTERNAL PROGRAM*/ PRORATE:PROCEDURE(RENT,MOVE_IN_DAY,R_DUE,D_ERROR); DECLARE D_ERROR BIT(1); DECLARE DAYS_REMAING FIXED DECIMAL(2); DECLARE MOVE_IN_DAY FIXED DECIMAL(2); DECLARE RENT FIXED DECIMAL(5,2); DECLARE R_DUE FIXED DECIMAL(5,2); DECLARE (NO,YES) BIT(1); DECLARE RENT_PER_DAY FIXED DECIMAL(5,2);

PL/1
IF MOVE_IN_DAY > 31 THEN D_ERROR = YES; ELSE DO; D_ERROR = NO; DAYS_REMAING= 31- MOVE_IN_DAY; RENT_PER_DAY =RENT/30 ; IF MOVE_IN_DAY = 1| MOVE_IN_DAY = 31 THEN THEN R_DUE = RENT ; ELSE R_DUE = DAYS_REMAING * RENT_PER_DAY END PRORATE ;

PL/1

PL/1
SELECT (SHIP_CODE); WHEN (110) CALL SHIP_BEST_WAY_CODE; WHEN (120) CALL SHIP_UPS_REGULAR; WHEN (130) CALL SHIP_UPS_BLUE_LABEL; WHEN (140) CALL SH1P_UPS_RED_LABEL; OTHERWISE CALL SHIP_CODE_ERROR; END;

PL/1

DO WHILE(X>0); .. .. END ,

PL/1

DO UNTIL (X>0); . . END ,

PL/1
J = 100; K = 5 DO I = 1 TO J BY K ; DO DO DO DO DO DO DO DO I = 1 TO 100 BY 5 ; DO K = 5 TO 1 BY -1; I = 1 TO 100; I = K*2 TO K*5 BY J-4; B = 1.5 TO 10 BY 0.025; K = 1 TO 10, 21 TO 30 , 41 TO 50; I = 1 BY 1; J = 1,8,9,11,6,13; K = 1 TO 10 WHILE(X>100);

PL/1
SURNAME : PROCEDURE OPTIONS ( MA I N ) ; DCL FIRST_CHAR FIXED BINARY (15,0) DCL FULL_NAME CHAR (40) ; DCL LAST_CHAR FIXED BINARY (15,0) DCL LENGTH_OF_NAME FIXED BINARY (15,0) DCL MORE_RECORDS BIT(1) INIT(1 B) DCL NO BIT(1) INIT(0 B) DCL SUBSTR BUILTIN ; ON ENDFILE (SYSIN) MORE RECORDS = NO;

PL/1
PUT PAGE LIST ('FIRST NAME FIRST ' , ' ',LAST NAME FIRST); PUT SKIP (2) ; GET LI ST (FULL NAME); PUT SKIP LIST(FULL_NAME) ; DO WH I LE (M0RE_REC0RDS); DO LAST_CHAR = 40 TO 1 BY -1 WH I LE( SUBSTR ( FULL_NAME, LAST_CHAR, 1) = ' '); END; DO FIRST_CHAR = LASTCHAR TO 1 BY -1 UNTI L( SUBSTR ( FULL_NAME, FIRST_CHAR, 1 ) = ' '); END;

PL/1
LENGTH_OF_NAME = LAST_CHAR - FIRST_CHAR; FIRSTCHAR = FIRST_CHAR + 1; IF FIRST_CHAR > 1 THEN FULL_NAME = SUBSTR ( FULL_NAME , F I RST_CHAR , LENGTH_OF_NAME ) || , || SUBSTR (FULL_NAME, 1, F I RST_CHAR - 1); PUT LIST (FULL_NAME); GET LI ST (FULL NAME); PUT SKIP LIST (FULLL_NAME) ; END; END SURNAME;

PL/1
DCL DAYS(365) FIXED DEC(4,1);

DCL LIST(-2 : 6) FIXED BIN (15 , 0) INIT (91,20,82,11,73,48,19,16,70);

PL/1
DCL TABLE(6,2) FIXED DEC (5) ; DCL AXIS(-3:3,-4:4) FLOAT DEC (6) INIT ((63) 0) ;

PL/1
DCL COMMISSION (5,3) FIXED DEC (4,3) ;

PL/1
DCL X (5) FIXED BIN (15 ,0) INIT ( 10, 20, 30, 40, 50) DCL Y (3) FIXED BIN (15,0) INIT (3, 2,1) I=3 ; Z=X(Y(1))

PL/1
DCL INFILE FILE DD STREAM INPUT;

//INFILE

DSN=PARTS.INSTOCK, . . .
FILE RECORD {INPUT | OUTPUT | UPDATE} {SEQUENTIAL | DIRECT} [KEYED]

DCL file-constant

ENVIRONMENT( CONSECUTIVE | VSAM, RECSIZE(n), BLKSIZE(n), F | FB | V | VB . . .)

PL/1
READ FILE (file-reference) [INTO(reference) [KEY(expression) | KEYTO (reference) ]] WRITE FILE (file-reference) FROM (reference) [KEYFROM (expression) | KEYTO (reference) ]] DELETE FILE (file-reference) [KEY (expression)]

PL/1
DCL INFILE FILE INPUT RECORD ENV(F RECSIZE(80)); DCL OUTFILE FILE OUTPUT RECORD ENV(F RECSIZE(80)); DCL DATA_AREA CHAR(80); OPEN FILE(INFILE),FILE(OUTFILE); . READ FILE(INFILE) INTO (DATA_AREA); WRITE FILE(OUTFILE) FROM(DATA_AREA); . . CLOSE FILE(INFILE),FILE(OUTFILE);

PL/1
SAMPLE2: PROC OPTIONS(MAIN); DCL INFILE FILE RECORD INPUT; DCL EOF_INF BIT(1) INIT('0'B); ON ENDFILE(INFILE) BEGIN; EOF_INF = '1'B; END; /*INPUT FILE STRUCTURES */ DCL 1 IN_REC, 2 IT_NO FIXED DEC(5) INIT(0), 2 FILL1 CHAR(1) INIT(' '), 2 IT_NM CHAR(20) INIT(' '), 2 FILL2 CHAR(1) INIT(' '), 2 QUANTITY FIXED DEC(3) INIT(0), 2 FILL3 CHAR(1) INIT(' '), 2 AMOUNT FIXED DEC(5,2) INIT(0), 2 FILLER CHAR(49) INIT(' ');

PL/1
/* OTHER INPUT AND OUTPUT VARIABLE */ DCL AVG_IN FIXED DEC(10,4) INIT(0); DCL AVG_OUT FIXED DEC(10,4) INIT(0); DCL RANGE_IN FIXED DEC(4) INIT(0); DCL RANGE_OT FIXED DEC(4) INIT(0); DCL AMT_IN FIXED DEC(10,4) INIT(0); DCL AMT_OUT FIXED DEC(10,4) INIT(0); DCL TOTAL_COUNT FIXED DEC(3) INIT(0);

PL/1
OPEN FILE(INFILE) INPUT; READ FILE(INFILE) INTO(IN_REC); IF EOF_INF = '1'B THEN DO; PUT SKIP LIST ('EMPTY INPUT FILE '); END; DO WHILE (EOF_INF = '0'B); TOTAL_COUNT = TOTAL_COUNT + 1; IF TOTAL_COUNT >= 60 & TOTAL_COUNT <= 100 THEN DO; RANGE_IN = RANGE_IN + 1; AMT_IN = AMT_IN + IN_REC.AMOUNT; END; ELSE DO; RANGE_OT = RANGE_OT + 1; AMT_OUT = AMT_OUT + IN_REC.AMOUNT; END; READ FILE(INFILE) INTO(IN_REC); END;

PL/1
AVG_IN = AMT_IN / RANGE_IN ; AVG_OUT = AMT_OUT / RANGE_OT; PUT SKIP LIST (' TOTAL RECORDS = '||TOTAL_COUNT); PUT SKIP LIST (' COUNT 1 TO 59 RECORDS = '||RANGE_OT); PUT SKIP LIST (' COUNT 60 TO 100 RECORDS = '||RANGE_IN); PUT SKIP LIST (' AMOUNT 60 TO 100 RECORDS = '||AMT_IN); PUT SKIP LIST (' AMOUNT 1 TO 59 RECORDS = '||AMT_OUT); PUT SKIP LIST (' AVERAGE 60 TO 100 RECORDS = '||AVG_IN); PUT SKIP LIST (' AVERAGE 1 TO 59 RECORDS = '||AVG_OUT); CLOSE FILE(STORE1); END SAMPLE2;

PL/1
PROC OPTIONS (MAIN); DCL INFILE RECORD INPUT; DCL OUTFILE RECORD OUTPUT; DCL INP_EOF BIT(1) INIT('0'B); /* SET ON CONDITION FOR THE INPUT FILE */ ON ENDFILE (INFILE) BEGIN; INP_EOF = '1'B; END; /* OPEN THE INPUT AND OUTPUT FILES */ OPEN FILE (INFILE) ; OPEN FILE (OUTFILE);

PL/1
/*INPUT FILE STRUCTURES */ DCL 1 IN_REC, 2 NAME1 CHAR(20) 2 FILL1 CHAR(1) 2 STREET CHAR(20) 2 FILL2 CHAR(1) 2 TOWN CHAR(20) 2 FILLER CHAR(18) /* DECLARE THE OUTPUT FILE DCL OUT_STR1 CHAR(80) ; DCL OUT_STR2 CHAR(80) ; DCL OUT_STR3 CHAR(80) ; INIT(' '), INIT(','), INIT(' '), INIT(','), INIT(' '), INIT(' '); STRUCTURE */

PL/1
DO WHILE(INP_EOF = '0'B); READ FILE(INFILE) INTO(IN_REC); IF INP_EOF = '0'B THEN DO; OUT_STR1 = ' '; OUT_STR2 = ' '; OUT_STR3 = ' '; CALL CON_STR; WRITE FILE(OUTFILE) FROM(OUT_STR1); WRITE FILE(OUTFILE) FROM(OUT_STR2); WRITE FILE(OUTFILE) FROM(OUT_STR3); END; END; CLOSE FILE(INFILE); CLOSE FILE(OUTFILE);

PL/1
/* CON_STRSTARTS HERE */ CON_STR : PROC; OUT_STR1 = IN_REC.NAME1; OUT_STR2 = IN_REC.STREET; OUT_STR3 = IN_REC.TOWN; END CON_STR; END SAMPLE4;
input file

BROWSE R04968.KARTHIK.FILE4 Line 00000000 Col 001 080 +----1----+----2----+----3----+----4----+----5----+----6----+----7---8 ******************** Top of Data ************************ karthik ,k.savaram ,tanuku **************** Bottom of Data**************************

PL/1
PROC OPTIONS (MAIN); DCL INFILE RECORD INPUT; DCL OUTFILE RECORD OUTPUT; DCL EOFIN BIT(1) INIT('0'B); /* SET ON CONDITION FOR THE INPUT FILE */ ON ENDFILE (INFILE) BEGIN; EOFIN = '1'B; END; /* OPEN THE INPUT AND OUTPUT FILES */ OPEN FILE (INFILE) ; OPEN FILE (OUTFILE);

PL/1
DCL IN_STR CHAR(80) VARYING; DCL OUT_STR CHAR(80) VARYING ; DCL OUT_STR1 CHAR(80) ; DO WHILE(EOFIN = '0'B); READ FILE(INFILE) INTO(IN_STR); IF EOFIN = '0'B THEN DO; OUT_STR = ' '; CALL REV_STR; OUT_STR1 = TRIM(OUT_STR); WRITE FILE(OUTFILE) FROM(OUT_STR1); END; END; CLOSE FILE(INFILE); CLOSE FILE(OUTFILE);

PL/1
REV_STR : PROC; DCL LEN_STR FIXED BINARY(15,0); DCL J FIXED DECIMAL(2) INIT(0); DCL I FIXED DECIMAL(2) INIT(1); LEN_STR = LENGTH(IN_STR); DO WHILE(SUBSTR(IN_STR,I,1) = ' '); I = I + 1; END; J = LEN_STR; DO WHILE (J -I + 1 > 0); OUT_STR = OUT_STR || SUBSTR(IN_STR,J,1); J = J - 1; END; END REV_STR; END SAMPLE3;

PL/1
SURNAME : PROCEDURE OPTIONS ( MA I N ) ; DCL FIRST_CHAR FIXED BINARY (15,0) DCL FULL_NAME CHAR (40) ; DCL LAST_CHAR FIXED BINARY (15,0) DCL LENGTH_OF_NAME FIXED BINARY (15,0) DCL MORE_RECORDS BIT(1) INIT(1 B) DCL NO BIT(1) INIT(0 B) DCL SUBSTR BUILTIN ; ON ENDFILE (SYSIN) MORE RECORDS = NO;

You might also like